目录
1.问题描述
2.问题求解及代码
1.问题描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
2.问题求解及代码
面对本题我们想到以下一个易懂的算法求解
我们以数组第一个字符串的长度作为范围进行for循环,判断最长公共前缀个数(最长公共前缀个数不会超过任何一个子字符串长度),然后在以字符串的个数进行for循环,判断每个字符串此字符是否相等,若相等则进入下一循环,若不相等则把第一个子字符串此字符改为 '\0'最后返回第一个子字符串,注意,若外字符串长度为0则直接返回NULL,下面是完整代码
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0) {
return NULL;
}
for (int i = 0; i < strlen(strs[0]); i++)
{
for (int j = 0; j < strsSize; j++)
{
if (strs[j][i] != strs[0][i])
{
strs[0][i] = '\0';
return strs[0];
}
}
}
return strs[0];
}