题意:返回一个字符串数组中的最长公共前缀。
例子:”abcdefg” “abcdefghijk” “abcdfghijk” “abcef”
上面的字符串数组的最长公共前缀就是”abc”。
分析:第一步,就是要找出该字符串数组中的最短字符串的长度及其序列。
第二步,,具体步骤如下:
外层for循环中用i表示字符串长度,从0一直可以递增到arrMinLen 。
内层for循环中j从0到从arrNum ,表示第一个字符串到最后一个字符串依次做比较。
class Solution {
public String longestCommonPrefix(String[] strs) {
int arrNum = strs.length;
int arrMinLen = Integer.MAX_VALUE;
if (arrNum==0) return "";
for(int i = 0; i < arrNum; i++){
arrMinLen = Math.min(arrMinLen, strs[i].length());
}
for(int i = 0; i < arrMinLen; i++){
char val = strs[0].charAt(i);
for(int j = 0; j < arrNum; j++){
if(strs[j].charAt(i) != val){
return strs[0].substring(0, i);
}
}
}
return strs[0].substring(0, arrMinLen);
}
public static void main(String[] args) {
Solution sl = new Solution();
String[] strArr = {"aabb","aabc","aacc"};
System.out.println(sl.longestCommonPrefix(strArr));
}
}