1 描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
2 思路
1 首先在strs里找到长度最短的那个字符串的长度,此长度即为最长公共前缀长度的最大值
2 然后遍历这个长度,在每次遍历的时候比较strs里面的每一个字符串的相同位置的字符,从0开始比较到上面那个长度。这里定义一个flag,当比较两个字符串相同位置的字符时 若相等flag就是true,那么将此字符加入结果字符的集合里,若不相等就立即停止遍历。
3 代码实现
public static String longestCommonPrefix(String[] strs) {
boolean flag = true;
int minLen = Integer.MAX_VALUE;
//1 寻找到最小字符串的长度
for (int i = 0; i < strs.length; i++) {
minLen = Math.min(minLen, strs[i].toCharArray().length);
}
ArrayList<Character> resultList = new ArrayList<>();//定义存放结果的字符串
//根据此长度来找到最长公共前缀,因为最长的公共前缀的长度也不会超过此长度
for (int i = 0; i < minLen && flag; i++) {
char tempChar = strs[0].toCharArray()[i];
for (int j = 0; j < strs.length && flag; j++) {
flag = tempChar == strs[j].toCharArray()[i];
}
if (flag) {
resultList.add(tempChar);
}
}
StringBuilder resultBuilder = new StringBuilder();
resultList.forEach(l -> {
resultBuilder.append(l);
});
return resultBuilder.toString();
}