14. 最长公共前缀

50 阅读1分钟

14. 最长公共前缀

简单

相关标签

premium lock icon相关企业

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

 

示例 1:

输入: strs = ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

 

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 如果非空,则仅由小写英文字母组成

题解:

bug: 1if (str[j][i] == '\0' || str[j][i] != str[0][i])这句判断退出条件,应该是满足其一即可,用||,一开始用&&找了很久没看出来; 2.由于遍历是竖着的,i和j的表示和平时写的不一样,变成str[j][i],这就导致后面赋值时候same[i] = str[0][i];错写成same[j] = str[0][i];,找了很久bug.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char str[200][200];
    int size, i = 0, j = 0, flag = 0;
    char same[200] = {'\0'};
    scanf("%d", &size);
    for (i = 0;i <= size - 1;i ++)
    {
        scanf("%s", str[i]);
    }
    for (i = 0;i < 200;i ++)
    {
        for (j = 0;j <= size - 1;j ++)
        {
            if (str[j][i] == '\0' || str[j][i] != str[0][i])
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0)
        {
            same[i] = str[0][i];
        }
        else break;
    }
    printf("%s", same);
    return 0;
}