编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
输入:strs = ["flower","flow","flight"]
输出:"fl"
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i]
仅由小写英文字母组成class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0){
return "";
}
String ans=strs[0];
for(int i=1;i<strs.length;i++){
int j=0;
for(;j<ans.length() && j<strs[i].length();j++){
if(ans.charAt(j) != strs[i].charAt(j))
break;
}
ans = ans.substring(0, j);
if(ans.equals(""))
return ans;
}
return ans;
}
}
这段代码实现了一个寻找字符串数组中最长公共前缀的算法。下面是这个算法的解读:
strs[0]
。
strs[i]
,从第一个字符开始,与最长公共前缀ans
逐个字符比较。
ans
截取到不匹配位置,保留前面匹配的部分。
ans
更新为当前的最长公共前缀。
ans
。
该算法的时间复杂度为O(n*m),其中n是字符串数组的长度,m是最长公共前缀的长度。