编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
函数的原型为 char* longestCommonPrefix(char** strs, int strsSize)
原谅我不喜欢用指针,但是用数组也是相同的意思。在这里,如果有多个字符串的时候,我们是不是可以以第一个字符串为基准,其他字符串和这个字符串做比较。在这里,我们结束程序的条件是,其他字符串的元素和第一个字符串的元素不想等是,则return;代码如下:
char* longestCommonPrefix(char** strs, int strsSize)
{
int i,j,flag;
char ch;
if(strsSize==1)
return *strs;
if(strsSize==0)
return "";
for(i=0;;i++)
{
flag=0;
ch=strs[0][i];
for(j=1;j<strsSize;j++)
{
if( ch!=strs[j][i])
{
flag=1;
break;
}
}
if(flag==1)
break;
}
if(i==0)
return "";
char *p=malloc(sizeof(char)*i);
for(j=0;j<i;j++)
{
p[j]=strs[0][j];
}
p[j]='\0';
return p;
}