字符串
# 14. 最长公共前缀 - 力扣(LeetCode) (opens new window)
纵向扫描(最优解)
按列比较
:
以第一个字符串
strs[0]
为基准,从索引0
开始逐列扫描。对于每一列位置
i
1,比较所有字符串的第
i
1个字符是否相同:
- 若相同,继续检查下一列;
- 若不同或某个字符串已结束(即
i
超出其长度),则当前列之前的部分即为最长公共前缀。
终止条件
:
- 出现字符不匹配,或某个字符串长度不足。
class Solution {
public String longestCommonPrefix(String[] strs) {
// 空数组直接返回
if (strs == null || strs.length == 0) return "";
for (int i = 0; i < strs[0].length(); i++) {
// 基准字符串的当前字符
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; j++) {
// 关键:检查长度不足或字符不匹配
if (i == strs[j].length() || strs[j].charAt(i) != c) {
// 返回已匹配的前缀
return strs[0].substring(0, i);
}
}
}
// 全部字符匹配,返回整个基准字符串
return strs[0];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
编辑 (opens new window)
上次更新: 2025/07/16, 10:21:39
← 数学 从道家哲学看计算机?→