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

求解代码

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 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++