编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
public String longestCommonPrefix(String[] strs) {
if( strs == null || strs.length < 1 ) return "";
if( strs.length == 1 ) return strs[0];
int min = Integer.MAX_VALUE;
for( int i = 0 ; i < strs.length; i++ ){
min = Math.min( min , strs[i].length());
}
for(int i = 1 ; i <= min; i++ ){
String sub = strs[ 0 ].substring( 0 , i );
for( int j = 1; j < strs.length; j ++ ){
if( ! strs[j].substring( 0 , i).equals( sub ) ){
return sub.substring( 0 , i -1);
}
}
}
return strs[0].substring(0 , min);
}
解体思路: 先求出数组中最短字符串的长度
从1 到 min 长度取子串, 如果出现子串不一致,则返回 当前长度减一的子串
如果全部都一样,则在最后返回长度为min的字串