📅  最后修改于: 2023-12-03 15:06:56.554000             🧑  作者: Mango
在字符串数组中查找最长公共前缀是编程面试中常见的问题。本文将介绍一种使用排序算法查找最长公共前缀的 Java 程序。
该程序解决问题的思路如下:
排序的时间复杂度为 O(nlogn),字符串比较的时间复杂度为 O(min(m,n)),其中 m 为公共前缀的长度,n 为字符串数组的长度。所以该算法的时间复杂度为 O(nlogn)。
下面是该算法的 Java 代码实现:
public class LongestCommonPrefix {
public static String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
Arrays.sort(strs);
StringBuilder sb = new StringBuilder();
int len = Math.min(strs[0].length(), strs[strs.length - 1].length());
for (int i = 0; i < len; i++) {
if (strs[0].charAt(i) != strs[strs.length - 1].charAt(i)) {
break;
}
sb.append(strs[0].charAt(i));
}
return sb.toString();
}
}
代码中的 longestCommonPrefix
方法接收一个字符串数组,返回数组中所有字符串的公共前缀。如果数组为空或长度为 0,则返回空字符串。程序先使用 Arrays.sort
方法将字符串数组按字典序从小到大排序,然后依次比较排序后的第一个字符串和最后一个字符串的字符。如果字符相同,则将其加入到一个 StringBuilder 中,否则返回 StringBuilder 中的字符串即为结果。