问题描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成
解题思路
先求这几个字符串中最短的字符串的长度,然后使用双重for循环进行求相同的前缀,若无相同的前缀则在字符串开头加“\0”,退出内循环,若找到,则退出外循环。
代码呈现
char* longestCommonPrefix(char** strs, int strsSize) {
int len=0;
int i,j;
len=strlen(strs[0]);
int flag=0;
for(i=0;i<strsSize;i++)
{
if(strs[i]<len)
len=strlen(strs[i]);
}
if(len==0)
return "";
for(int i=0;i<len;i++)
{
for(j=1;j<strsSize;j++)
{
if(strs[0][i]!=strs[j][i])
{
strs[0][i]= '\0' ;
flag=1;
break;
}
}
if(flag==1)
break;
}
return strs[0];
}
时间复杂度O(n2)