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
相关产品推荐
相关产品推荐

