描述:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: strs = ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: strs = ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
思路
初始化一个prefix用来存储当前的最长前缀,初始值为strs中的第一个元素,再对strs数组中的字符串逐个进行扫描,用prefix来对每个元素进行匹配,例如用'flower'来匹配'flow',逐个字符比较,如果flower的第一个字符等于flow的第一个字符,则继续,当flower的第4个字符e时,flow的第四个字符不存在,并更新此时的prefix(将此时j所在的位置设置为结束符),所以对flow的匹配结束,再对flight进行上述过程。
具体实现
char * longestCommonPrefix(char ** strs, int strsSize){
if(!strSize) return "";
char prefix = strs[0];
for(int i = 1; i < strSize; i++){
int j = 0;
//如果匹配的字符存在且相等
while(prefix[j] && strs[i][j] && prefix[j] == strs[i][j]){
j++;// 则匹配成功,继续下一个字符
}
prefix[j] = "\0";
if (j == 0) return "";
}
return prefix;
}