题解 | 最长公共前缀

最长公共前缀

http://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47

解法一:纵向扫描

  • 将字符串数组看作一个二维空间,每一次从第一列开始。
  • 确定所有字符子串中第一列字符。
  • 逐层扫描后面每一列,遇到不同字符停止扫描。
  • 图解:
  • 图片说明

Java参考代码:

import java.util.*;


public class Solution {
    /**
     * 
     * @param strs string字符串一维数组 
     * @return string字符串
     */
    public String longestCommonPrefix (String[] strs) {
        // //纵向扫描
        if(strs.length==0 || strs==null){
            return "";
        }

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

复杂度分析:

时间复

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

小白专属-牛客题解 文章被收录于专栏

专注于牛客平台编程题题解,文字+图解。内容很细,小白友好系列

全部评论
这个解法不对,如果第一个字符都不一样呢,例如{"gbch","ybcab","tbca","lbc","kbcc"}
点赞 回复 分享
发布于 2023-05-02 15:34 广东

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
40
5
分享
牛客网
牛客企业服务