编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
解
先遍历数组找到最短的字符串长度,然后使用双层循环遍历字符串数组,依次比较相邻2个字符串同一位置上的字符是否相同,如果不同,则直接返回该位置之前的子串即可。
public static String longestCommonPrefix(String[] strs) {
//特殊情况处理
if(strs.length==0)
return "";
if(strs.length==1)
return strs[0];
int max = Integer.MAX_VALUE;
for(int i = 0;i<strs.length;i++)
if(strs[i].length()<=max)
max = strs[i].length();
int i = 0,j = 1;
for(i = 0;i<max;i++) {
for(j = 1;j<strs.length;j++) {
if(strs[j].charAt(i)!=strs[j-1].charAt(i)) {
return strs[j].substring(0,i);
}
}
}
if(i==max)
return strs[0].substring(0,max);
return "";
}