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,你习惯哪种写法?评论区贴一下你的解法,以后复盘直接看自己的版本。

相关推荐
拂拉氏1 小时前
【知识讲解】 Linux权限相关知识讲解
linux·权限
圣保罗的大教堂1 小时前
leetcode 3090. 每个字符最多出现两次的最长子字符串 简单
leetcode
小新讲网安2 小时前
HTTP请求走私攻击实战:CL.TE与TE.CL绕过前端服务器全解析
服务器·前端·网络·web安全·http·架构·漏洞
桑榆4166 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu
ltl13 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux
我是谁??13 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
圣殿骑士-Khtangc13 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
Shell运维手记14 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
这个DBA有点耶14 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构