LeetCode : Longest Common Prefix
题目原意:将字符串数组中最长的共同字符前缀返回。
注意: 判断空字符”“与NULL的情况。并在程序中加以区分判定
把题意理解正确了,本题就不存在什么难处了。
题目原意:将字符串数组中最长的共同字符前缀返回。
注意: 判断空字符”“与NULL的情况。并在程序中加以区分判定
把题意理解正确了,本题就不存在什么难处了。
代码如下(leetCode 测得运行时间为0ms):
char *longestCommonPrefix(char** strs, int strsSize)
{
char *a = NULL;
int i, j, k;
int shortLen ;
if (strsSize < 1) //!< 空字符串""
{
return "";
}
if (strs == NULL) //!< NULL指针
{
printf("The string is NULL");
return NULL;
}
shortLen = strlen(strs[0]); //!< 保存前缀的长度
if (strsSize == 1)
{
return strs[0];
}
for (j = 1; j < strsSize; ++j) //!< 依次比较每一个字符串
{
k = 0;
for (i = 0; i < shortLen; ++i) //!< 比较相同位置的字符
{
if (strs[0][i] == strs[j][i])
{
++k;
}
else
{
shortLen = (k >= shortLen) ? shortLen : k; //!< 保存最小的前缀长度
break;
}
}
}
a = malloc(sizeof(char)*(shortLen+1));
for (i = 0; i < shortLen; ++i)
{
a[i] = strs[0][i];
}
a[i] = '\0';
return a;
}