题目链接
https://leetcode-cn.com/problems/longest-common-prefix/
一、题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
提示:
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
二、分析与代码
1.分析
题目是求最长公共前缀,给出的字符串数组为二维数组,所以我们可以用一层循环来遍历第一个字符串,然后让剩余字符都与其比较,直到比较到字符不相等为止。
2.代码
代码如下(示例):
char * longestCommonPrefix(char ** strs, int strsSize){
int i ,j;
char *r=NULL;
if (!strs || strsSize == 0)
return "";
for(i=0;i<strlen(strs[0]);i++){//外循环用来表示首字符
for(j=1;j<strsSize;j++){//里循环用来表示第j个字符
if(strs[0][i]!=strs[j][i]){//全与第一个字符比较
if(i==0){
return "";
}
r = calloc(i + 1, 1);
strncpy(r, strs[0], i);
return r;
}
}
}
r = calloc(strlen(strs[0]) + 1, 1);//全部相等时
strncpy(r, strs[0], strlen(strs[0]));
return r;
}