编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
这题是真的坑,字符串可能为0,为空,若输出字符串则需要'\0'
作为咸鱼的我,疯狂wa……最后终于过了。
char* longestCommonPrefix(char** strs, int strsSize) {
char *ans = NULL;
int nums = 0;
if(strsSize==0)
return "";
if(strsSize==1)
return strs[0];
bool flag=false;
for(int i=0;;i++)
{
char c = strs[0][i];
int j=1;
for(j=1;j<strsSize;j++)
{
if(c!=strs[j][i])
{
flag = true;
break;
}
}
if(j==strsSize)
nums++;
if(flag==true)
break;
}
ans = (char*)malloc((nums+1)*sizeof(char));
strncpy(ans,strs[0],nums);
ans[nums]='\0';
if(nums==0)
return "";
return ans;
}