Write a function to find the longest common prefix string amongst an array of strings.
char* longestCommonPrefix(char** strs, int strsSize) {
int min_length = 0, min_index=0, i, j,tmp ;
int flag=1;
if (strsSize == 0) return "";
if (strsSize == 1) return strs[0];
if ((strlen(strs[0])) > 0)
min_length = strlen(strs[0]);
for (i = 0; i < strsSize; i++) { // 首先找出最短的长度,因为最长前缀是拿着最短的字符串去比较
tmp=strlen(strs[i]);
if (tmp < min_length) {
min_length = tmp;
min_index = i;
}
}
if (min_length == 0) return "";
char* ret = malloc((min_length)*sizeof(char));
*ret="";
for (j = 0; j < min_length; j++) { //遍历最短字符串的每个字符
for (i = 0; i < strsSize; i++) { //遍历字符串数组,和最短字符串的每个字符作比较,如果发现有不相等的,就跳出两层for循环
if (strs[min_index][j] != strs[i][j]) {
flag = 0;
printf("%d", flag);
break;
}
}
if (flag==1) {
ret[j]=strs[min_index][j];
} else {
ret[j]='\0';
return ret;
}
}
ret[j]='\0';
return ret;
}
Note: 其实不用找出最短的字符串,任意取字符串作比较即可。