【纵向扫描】最长公共前缀

求解代码

java 复制代码
public String longestCommonPrefix (String[] strs) {
        if(strs==null||strs.length==0){
            return "";
        }
        int rows = strs.length;
        int cols = strs[0].length();

        for(int i=0;i<cols;i++){
            char c = strs[0].charAt(i);
            for(int j=1;j<rows;j++){
                if(strs[j].length()==i||strs[j].charAt(i)!=c){
                    return strs[0].substring(0, i);
                }
            }
        }
        return strs[0];
    }

小贴士

纵向扫描的思路大概是:

以I【字符串数组】的第一个字符串的字符位置 为 "列",以i为列索引遍历每一列;

取第一个字符串的当前列字符c作为基准,以j为行索引

遍历【字符串数组】的其他所有字符串,对比同列的字符。

如果某个字符串长度等于当前列索引了,说明这个字符串已经没有更多字符了,

或者同列字符不一致

那就说明公共前缀到i-1列就结束了,

可直接返回strs[0].substring(0,i)

如果所有列都对比通过,说明第一个字符串就是最长公共前缀,直接返回strs[0]

相关推荐
方安乐1 天前
python之向量、向量和、向量点积
开发语言·python·numpy
代码AI弗森1 天前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
Old Uncle Tom1 天前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
小小小米粒1 天前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
摇滚侠1 天前
expdp 查看帮助
java·数据库·oracle
czhc11400756631 天前
C# 428 线程、异步
开发语言·c#
:1211 天前
java基础
java·开发语言
SilentSamsara1 天前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
曹牧1 天前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
daixin88481 天前
cursor无法正常使用gpt5.5等模型解决方案
java·redis·cursor