最长公共前缀

题目详情

最长公共前缀

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

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

示例 1:

输入:strs = [“flower”,”flow”,”flight”]
输出:”fl”

示例 2:

输入:strs = [“dog”,”racecar”,”car”]
输出:””
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

题解

此题主要理解题干中的公共前缀,

例如

​ “flower”,”flow”,”flight” 最长公共前缀为 “fl”

​ “bflower”, “afow”, “bflight” 就没有最长公共前缀 ,最长公共前缀为 “”

理解到这一层,此题也就迎刃而解了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public static String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}

String prefix = strs[0];
int length = strs.length;

for (int i = 1; i < length; i++) {
String str = strs[i];
prefix = commonPrefix(prefix, str);
}
return prefix;
}

private static String commonPrefix(String prefix, String str) {
int min = Math.min(prefix.length(), str.length());
int index = 0;

while (index < min && prefix.charAt(index) == str.charAt(index)) {
index++;
}

return prefix.substring(0, index);
}
}

image-20241111161347227

本题难点,需要读懂题干中的   “最长公共前缀”