简单
相关标签
相关企业
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: strs = ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
提示:
1 <= strs.length <= 2000 <= strs[i].length <= 200strs[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;
}