最长公共前缀

最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

1
2
输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

1
2
3
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z

解法:

由于只是最长公共前缀,先将字符数组排序,只比较最小和最大的字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static String longestCommonPrefix1(String[] strs) {
StringBuilder builder = new StringBuilder();
if (strs != null && strs.length > 0) {
Arrays.sort(strs);
char[] a = strs[0].toCharArray();
char[] b = strs[strs.length - 1].toCharArray();

for (int i = 0; i < a.length; i++) {
if (b.length > i && a[i] == b[i]) {
builder.append(a[i]);
} else {
return builder.toString();
}
}
}
return builder.toString();
}