- 描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。 - 实例:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
- 小结:
- 前缀,不是字串,不需要使用滑动窗口这些技巧
- 重要的算法,在于比较两个字符是否相等,从而判断,是否两个组字符串是否具有相同前缀,再两两比较完所有的元素,最终会得到,所有元素的共同最长前缀。
- 代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) return "";
String prefix = strs[0];
for (int i = 1; i < strs.length; i++) {
prefix = LCP(prefix, strs[i]); // 对每个元素求公共前缀,最后肯定得到的是共同的前缀
if (prefix.length() == 0) break;
}
return prefix;
}
public String LCP(String s1, String s2) {
int len = Math.min(s1.length(), s2.length());
int index = 0;
while (index < len && s1.charAt(index) == s2.charAt(index)) {
index++;
}
return s1.substring(0, index);
}
}