最长公共前缀

最长公共前缀

题目链接

leetcode

题目描述

写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入:

strs = ["flower","flow","flight"]

输出:

"fl"

示例 2:

输入:

strs = ["dog","racecar","car"]

输出:

""

解释:

输入不存在公共前缀。

题目解法

第一种解法:横向扫描 一个一个字符串比较

public static String longestCommonPrefix(String[] strs) {

       //先判断字符串数组是否为空
       if(strs == null || strs.length == 0) {
           return "";
       }

       //那第一个字符串和其他字符做比较
       String pre = strs[0];
       int length = strs.length;
       for(int i = 1; i < length; i++) {
           //  两个字符串比较的方法
           pre = longestCommonPrefix(pre,strs[i]);
           if(pre.length() == 0) {
               break;
           }
       }
       return pre;
   }

   public static String longestCommonPrefix(String pre,String fix) {
       //取两个字符串最小的一个长度,因为两个字符串的公共长度最长只能为最小字符串的长度
       int min = Math.min(pre.length(), fix.length());
       int index = 0;
       // index < min 防止溢出, pre.charAt(index) == fix.charAt(index) 比较两个字符串中同位置的字符是否相等
       while (index < min && pre.charAt(index) == fix.charAt(index)) {
           //相等就++
           index++;
       }
       //循环退出后,表示获取到了公共长度的最长位置,就截取字符串
       return pre.substring(0,index);
   }

第二种解法:纵向扫描

取字符串数组中的每一个字符串,相同位置的字符进行比较

    public static String longestCommonPrefix1(String[] strs) {

        //也是先判断
        if(strs == null || strs.length == 0) {
            return "";
        }

        int length = strs[0].length();
        int count = strs.length;
        for(int i = 0; i < length; i++) {
            char c = strs[0].charAt(i);
            for(int j = 1; j < count; j++) {
                // 判断其他字符串中的字符是否和第一个字符串的字符相同
                if(i == strs[j].length() || strs[j].charAt(i) != c) {
                    //字符不同就返回前面相同的
                    return strs[0].substring(0,i);
                }
            }
        }
        return strs[0];
    }
posted @   China熊孩子  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示