leetcode-14-easy
Longest Common Prefix
思路一: 取第一个字符串为基准,依次对比剩余的字符串,取公共串
private static int commonPrefix(char[] arr1, char[] arr2) {
int n = Math.min(arr1.length, arr2.length);
int count = 0;
for (int i = 0; i < n; i++) {
if (arr1[i] != arr2[i]) {
break;
} else {
count++;
}
}
return count;
}
public static String longestCommonPrefix(String[] strs) {
char[] chars = strs[0].toCharArray();
int n = chars.length;
for (int i = 1; i < strs.length; i++) {
n = Math.min(commonPrefix(chars, strs[i].toCharArray()), n);
if (n <= 0) break;
}
return strs[0].substring(0, n);
}
思路二: 先最字符串数组排序,最后比较首尾两个字符串的公共串
public static String longestCommonPrefix(String[] strs) {
if (strs.length == 1) return strs[0];
Arrays.sort(strs);
String begin = strs[0];
int n = 0;
String end = strs[strs.length - 1];
for (int i = 0; i < Math.min(begin.length(), end.length()); i++) {
if (begin.charAt(i) != end.charAt(i)) {
break;
}
n++;
}
return begin.substring(0, n);
}

浙公网安备 33010602011771号