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

求解代码

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]

相关推荐
北京阿法龙科技有限公司2 分钟前
AR智能眼镜安防应用核心指标:识别距离筑牢防线
java·开发语言·ar
杜子不疼.3 分钟前
【C++】继承—C++的秘密武器,get父类的智慧
开发语言·c++
殘殤血9 分钟前
Tomcat的事件监听机制:观察者模式 _
java·观察者模式·tomcat
汤姆yu10 分钟前
面向具身智能的物理视频模拟器:蚂蚁灵波LingBot-Video开源模型全解析
java·大数据·人工智能·gpt·开源·大模型·音视频
SQL-First布道者15 分钟前
Spring JDBC Ultra 十边型战士
java·spring boot·后端·mysql·spring·mybatis
殘殤血20 分钟前
Tomcat的事件监听机制:观察者模式
java·观察者模式·tomcat
阿pin28 分钟前
Android随笔-View绘制流程
android·开发语言·view
Java面试题总结37 分钟前
GatewayWorker 从零到一完整指南
java
没钥匙的锁140 分钟前
04-Java面向对象基础
java·开发语言·mongodb
脉动数据行情1 小时前
Java OkHttp 完整封装 GC COMEX 美黄金实时盘口定时拉取工具类
java·okhttp·comex 黄金·外盘贵金属