Write a function to find the longest common prefix string amongst an array of strings.
题意:查找字符串数组中的最长子串
思路:
1. 找到最短长度的字符串,然后求得其他字符串与最小串的最大公共长度
char* longestCommonPrefix(char**strs, int strsSize) {
if(strs == NULL || *strs == NULL)
return "";
int i = 0, minLen = (0x7fffffff), minId = 0, tmpLen = 0;
for(; i < strsSize; i ++)
{
tmpLen = strlen(strs[i]);
if(tmpLen < minLen){
minLen = tmpLen;
minId = i;
}
}
tmpLen = minLen;
while(minLen)
{
for(i = 0; i < strsSize ; i ++){
if(i == minId){
continue;
}
if(strncmp(strs[i], strs[minId], tmpLen)){
tmpLen --;
break;
}
}
if(!(tmpLen ^ minLen)){
break;
}
minLen --;
}
char *prefix = malloc(sizeof(char) * tmpLen + 1);
memset(prefix, 0, sizeof(char) * tmpLen + 1);
strncpy(prefix, strs[minId], tmpLen);
return prefix;
}
执行时间:3ms