此题解题方法必须先找到最小字符串的长度,然后再检索字符串,先检索列再检索行
char* longestCommonPrefix(char** strs, int strsSize) {
int i = 1;
int k = 0;
int min = strlen(strs[0]);
//找到最小字符长度的一行
for(i = 1;i < strsSize;i++)
{
if(strlen(strs[i]) < min)
{
min = strlen(strs[i]);
}
}
int j = 0;
//然后先让列遍历,再让行遍历
for(j = 0;j < min;j++)
{
i = 0;
int flag = 0;
for(i = 0;i < strsSize - 1;i++)
{
if(strs[i][j] != strs[i + 1][j])
{
flag = 1;
break;
}
}
if(flag == 1)
{
break;
}
k++;
}
if(k == 0)
{
char* ret = strs[0];
strs[0][0] = '\0';
return ret;
}
else{
char* ret = strs[0];
j = 0;
for(j = 0;j < k;j++)
{
strs[0][j] = strs[0][j];
}
strs[0][j] = '\0';
return ret;
}
}