1.题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
2.示例
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
3.思路分析
采用纵向比较,将第一个字符串定为基准,让后面的每一个字符分别与第一个比较,比较时,一列一列分别比较,当后面的字符串在j列与第一个字符不同时,达到最大前缀,故返回str[0]
4.代码
char * longestCommonPrefix(char ** strs, int strsSize){
int i,j;
if(strsSize==0)
return "";
for(i=1;i<strsSize;i++)
{
for(j=0;j<strlen(strs[0]);j++){
if(strs[i][j]!=strs[0][j]) //第j列不同,找到最长公共前缀
strs[0][j]='\0'; //保存最长公共前缀
}
}
return strs[0];
}
5.时间复杂度和空间复杂度
时间复杂度:O(n²)
空间复杂度:O(1)