编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
public String longestCommonPrefix(String[] strs) {
int end=strs[0].length();
for(int i=1;i<strs.length;i++){
if(strs[i].length()==0)
return "";
for(int j=0;j<strs[0].length()&&j<strs[i].length();){
if(strs[i].charAt(j)==strs[0].charAt(j)){
if(j==Math.min(strs[0].length(),strs[i].length())-1)
end=Math.min(end,j+1);
j++;
}else{
end=Math.min(end,j);
break;
}
}
if(end == 0)
break;
}
return strs[0].substring(0, end);
}
总结
- 比较两个字符串时,两个字符串上的指针是同步移动的,所以用一个指针j就够,而不用
for(int j=0,k=0;j<strs[0].length()&&k<strs[i].length();)
if(strs[i].charAt(k)==strs[0].charAt(j)){
}
- substring方法
public String substring(int beginIndex) 或 public String substring(int beginIndex, int endIndex)
注意参数只有一个的时候是开始索引而不是结束索引
截取时包括开始索引,不包括结束索引