字符串
  # 14. 最长公共前缀 - 力扣(LeetCode) (opens new window)
纵向扫描(最优解)
按列比较
:
以第一个字符串
strs[0]为基准,从索引0开始逐列扫描。对于每一列位置
i1,比较所有字符串的第
i1个字符是否相同:
- 若相同,继续检查下一列;
 - 若不同或某个字符串已结束(即 
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
← 数学 从道家哲学看计算机?→