14. 最长公共前缀
- 1)题目
- 2)思路
- 3)代码
- 4)结果
1)题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
提示:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2)思路
当数组长度=1时,最长公共前缀就是本身;
数组长度>1时,
数组第一个值与第二个值进行判断,如果不存在公共前缀直接返回 "" ,
存在公共前缀的话,这个公共前缀与第三个值进行判断,···
3)代码
public static String longestCommonPrefix(String[] strs) {
if (strs.length == 1) return strs[0];
String str = strs[0];
for (int i = 1; i < strs.length; i++) {
String minStr = (str.length() >= strs[i].length()) ? strs[i] : str;
String maxStr = (minStr.equals(str)) ? strs[i] : str;
str = longest(minStr, maxStr);
if (str == null) return "";
}
return str;
}
// 判断两个字符串之间是否存在公共前缀,不存在返回null;
public static String longest(String minStr, String maxStr) {
if (minStr.equals(maxStr.substring(0, minStr.length()))) return minStr;
for (int j = 0; j < minStr.length(); j++) {
if (minStr.charAt(j) != maxStr.charAt(j)) return minStr.substring(0, j);
}
return null;
}