美文网首页
leetcode14 最长公共前缀

leetcode14 最长公共前缀

作者: justonemoretry | 来源:发表于2020-05-19 23:13 被阅读0次

自己的解法

自己的解法就是先找出长度最短的字符串,然后以这个字符串为基准,去遍历其它字符串,看大家的前几位是否是相同的,遇到有不相同的直接返回,效率贼低。

class Solution {

    public String longestCommonPrefix(String[] strs) {

        if (strs.length == 0) {

            return "";

        }

        if (strs.length == 1) {

            return strs[0];

        }

        String shortStr = strs[0];

        for (int i = 1; i < strs.length; i++) {

            if (strs[i].length() < shortStr.length()) {

                shortStr = strs[i];

            }            

        }

        StringBuffer res = new StringBuffer("");

        for (int j = 0; j < shortStr.length(); j++) {

            String a = shortStr.substring(j, j + 1);

            for (int n = 0; n < strs.length; n++) {

                String b = strs[n].substring(j, j + 1);

                if (!a.equals(b)) {

                    return String.valueOf(res);        

                }            

            }

            res.append(a);            

        }

        return String.valueOf(res);         

    }

}

进阶解法

思路是,每次比较,两个字符串得出它们最长公共前缀,然后拿这个最长公共前缀去和其它字符串进行比较,直到和最后一个字符串比较完就可以了,期间每次比较都已经是拿之前字符串相同的部分在比较了,相对减少了比较次数。字符串获取第几个字符可以直接用charAt。

class Solution {

    public String longestCommonPrefix(String[] strs) {

        if(strs.length == 0) 

            return "";

        String ans = strs[0];

        for(int i =1;i<strs.length;i++) {

            int j=0;

            for(;j<ans.length() && j < strs[i].length();j++) {

                if(ans.charAt(j) != strs[i].charAt(j))

                    break;

            }

            ans = ans.substring(0, j);

            if(ans.equals(""))

                return ans;

        }

        return ans;

    }

}

相关文章

  • LeetCode14(最长公共前缀)

    题目: 解题思路 从前往后枚举字符串的每一列,先比较每个字符串相同列上的字符(即不同字符串相同下标的字符)然后再进...

  • leetcode14 最长公共前缀

    自己的解法 自己的解法就是先找出长度最短的字符串,然后以这个字符串为基准,去遍历其它字符串,看大家的前几位是否是相...

  • 5、最长公共前缀 leetcode14

    描述 思路:拿每个字符串和第一个字符串相比,不相等时(或字符位数超出其他字符串长度)返回前面的字符。注意要考虑空数...

  • LeetCode 每日一题 [19] 最长公共前缀

    LeetCode 最长公共前缀 [简单] 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回...

  • 14. 最长公共前缀

    20180923-摘抄自14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,...

  • 5,最长公共前缀/数组与字符串

    最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1:...

  • Swift 最长公共前缀 - LeetCode

    题目: 最长公共前缀 描述: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""...

  • leetcode探索之旅(14)

    最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1: ...

  • Leetcode 14 最长公共前缀

    最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

  • LeetCodeSwift 14.Longest Common

    题目 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

网友评论

      本文标题:leetcode14 最长公共前缀

      本文链接:https://www.haomeiwen.com/subject/sdcwohtx.html