LeetCode 14 最长公共前缀 - 纵向扫描

LeetCode 14 最长公共前缀,以第一个串为基准,逐位跟其他串比对。


🟢 最长公共前缀

找字符串数组的最长公共前缀。["flower","flow","flight"] → "fl"


以第一个字符串为模板,逐位扫描。当某一位上的字符不是所有串都有、或者某串的这一位跟它不一样,前缀就到此为止。

java 复制代码
public String longestCommonPrefix(String[] strs) {
    for (int col = 0; col < strs[0].length(); col++) {
        char c = strs[0].charAt(col);
        for (int row = 1; row < strs.length; row++) {
            if (col >= strs[row].length() || strs[row].charAt(col) != c)
                return strs[0].substring(0, col);  // 前缀到此为止
        }
    }
    return strs[0];  // 第一个串全匹配
}

注意先判断 col >= strs[row].length() 再取 charAt------如果有一个字符串已经到头了,直接返回当前前缀。先判越界再判不等,顺序反了会抛异常。

这题没算法难度,但考察基本的字符串操作习惯。用 substring 返回结果比用 StringBuilder 拼接简洁。


这题有人用 A 有人用 B,你习惯哪种写法?评论区贴一下你的解法,以后复盘直接看自己的版本。

相关推荐
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.3 天前
进程间通信
linux
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog3 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
AIgorithmGEEK3 天前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid