题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
代码模板:
class Solution {
public String longestCommonPrefix(String[] strs) {
}
}
分析
首先这个题目是找公共前缀。前缀的话就比较简单了。
首先循环这个数组,找出当前数长度和下一个数长度以及之前公共前缀的长度里面的最小值,这个最小值作为循环次数,这样就可以不断的去找更小的值作为公共前缀的长度。
解答
class Solution {
public String longestCommonPrefix(String[] strs) {
if(null == strs || strs.length == 0){
return "";
}
if(strs.length ==1){
return strs[0];
}
String result = strs[0];
for(int i = 1;i<strs.length -1;i++){
String item = strs[i];
String itemAddOne = strs[i+1];
int j = 0;
int len = item.length() < itemAddOne.length() ?item.length() :itemAddOne.length();
len = len < result.length() ? len:result.length();
for(;j<len;j++){
if(item.charAt(j)!= itemAddOne.charAt(j)){
break;
}
}
result = item.substring(0,j);
}
return result;
}
}