编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”] 输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”] 输出:“” 解释:输入不存在公共前缀。
解题思路:
先求第一个字符串和第二个字符串的公共字符串,再用该公共字符串求与第三个字符串的公共字符串,再求该公共字符串求与第四个字符产的公共字符串,最终求的公共字符串即为字符串数组中的最长公共前缀。
题解代码
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);//0,j-1
if(ans.length()==0){
return "";
}
}
return ans;
}
}
注意:
strs.length求数组的长度
ans.length()求字符串的长度
ans.substring(0,j)对字符串进行截取,并且为(0,j-1)
另外:需注意循环的范围!!!粗心导致的不正确的范围会导致结果不正确,并且不容易找出来。