编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
char * longestCommonPrefix(char ** strs, int strsSize){
if(strsSize==0)return "";
int *row_size=(int *)malloc(sizeof(int)*strsSize);
for (int i=0;i<strsSize;i++)
{
row_size[i]=strlen(strs[i]);
}
int max_size=row_size[0];
for(int i=1;i<strsSize&&max_size>0;++i)
{
max_size=max_size<row_size[i]?max_size:row_size[i];
for(int j=0;j<max_size;++j)
{
if(strs[i-1][j]!=strs[i][j])
{
max_size=j;
break;
}
}
}
free(row_size);
char *ret=(char *)malloc(sizeof(char)*(max_size+1));
strncpy(ret,strs[0],max_size);
ret[max_size]='\0';
return ret;
}
执行用时 : 0 ms, 在Longest Common Prefix的C提交中击败了100.00% 的用户
内存消耗 : 7.2 MB, 在Longest Common Prefix的C提交中击败了77.61% 的用户