You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何编写代码查找并打印两个字符串的最长公共前缀?

C语言查找两个字符串最长公共前缀实现指导

核心实现逻辑

最长公共前缀要求两个字符串从第0位开始逐位字符都相等,直到出现第一个不相等的字符或者某一个字符串遍历结束,前面的相等字符组成的序列就是最长公共前缀。
你可以直接按以下逻辑补全findprefix函数:

  • 只需要单个索引变量i从0开始计数,不需要额外的j变量
  • for循环的终止条件同时满足3个要求:未遍历完str1、未遍历完str2、当前索引位两个字符串的字符相等
  • 循环内直接把相等的字符存入found数组的对应位置
  • 循环结束后给found数组添加字符串结束符\0,保证输出是合法字符串

补全后的完整函数代码

//Function to find the longest common prefix
void findprefix(char *str1, char *str2, char *found) {
    int i = 0;
    // 逐位对比字符,C语言中非'\0'的字符判断为真
    for (; str1[i] && str2[i] && str1[i] == str2[i]; i++) {
        found[i] = str1[i];
    }
    // 追加字符串结束标识
    found[i] = '\0';
}

注意事项

你现有代码中定义的found数组长度只有10,最多只能存储9个字符的公共前缀,如果公共前缀长度超过9会发生数组越界,建议修改main函数中的found定义,和输入字符串长度对齐:

char found[100] = { '\0' };

内容的提问来源于stack exchange,提问作者Kallum Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:36:07