14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
因为找的是数组的最长公共前缀,所以我们可以对这个数组进行一个排序处理==Arrays.sort(strs);==这样的话我们就可以得到一个排序后的结果,
排序前:
[flight, flow, flower]
["dog","racecar","car"]
排序后:
[flight, flow, flower]
[car, dog, racecar]//因为只有顺序相同的单词首字母才有公共前缀
因为是通过单词字母顺序来排列的,所以我们只需要将数组里面的第一个元素,和最后一个元素来比较,即可以确定最长的功能前缀,因为只有顺序相同的单词首字母才有公共前缀,中间不会夹着其他首字母
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs==null|| strs.length==0)return "";
Arrays.sort(strs);
StringBuilder stringBuilder = new StringBuilder();
// 取最小的单词长度进行遍历,公共部分也只能是在这部分产生
int k =Math.min(strs[0].length(), strs[strs.length - 1].length());
for (int i = 0; i < k; i++) {
if (strs[0].charAt(i) == strs[strs.length - 1].charAt(i)) {
// 拼接公共前缀
stringBuilder.append(strs[0].charAt(i));
}else {
break;
}
}
return stringBuilder.toString();
}
}