Leetcode练习题Longest Common Prefix

Posted zhichun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode练习题Longest Common Prefix相关的知识,希望对你有一定的参考价值。

Question:

Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

Example 1:

Input: ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: ["dog","racecar","car"]
Output: ""

Explanation: There is no common prefix among the input strings.
Note:

All given inputs are in lowercase letters a-z.

我的解法思路是:

首先比较第一个和第二个字符的第i字母,如果第一个和第二个字符的第i个字母相同,则比较第二个和第三个的第i个字母,如果都相等,则将第i个字母加入最后的str中,i的大小从0开始,直到循环最后。

存在的问题是:

class Solution {
    public String longestCommonPrefix(String[] strs) {
      
        int Strslength = strs.length;


        if(Strslength>1)
        {

            int minLength = strs[0].length();
            //O(n)
            for(String str:strs)
            {
                int strLength = str.length();
                if(minLength > strLength)
                {
                    minLength = strLength;
                }
            }

            //Store output ;
            String str = "";


           label:for(int i=0;i<minLength;i++)
            {

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

                    if((strs[j-1].charAt(i))!=(strs[j].charAt(i)))
                    {

                            break label;
                        
                    }

                }

            str+= strs[0].charAt(i);
            }
            return str;

        }
        else if(Strslength==1)
        {
            return strs[0];
        }
        else
        {
            return "";
        }

       

       
    }
}

技术图片

其他人的解法:

技术图片

在这个解法中,作者主要通过找到两个string中相等的那个值,然后返回结果作为字串继续寻找使用indexOf函数,找到第一个相等的位置。

    public static String longestCommonPrefix(String[] strs) {
            if(strs.length==0){return "";}
            String  prefix = strs[0];
            for(int i=1;i<strs.length;i++)
            {
                while (strs[i].indexOf(prefix)!=0)
                {
                    prefix= prefix.substring(0,prefix.length()-1);
                }
            }

            return prefix;
    }

以上是关于Leetcode练习题Longest Common Prefix的主要内容,如果未能解决你的问题,请参考以下文章

leetcode14. longest common prefix

LeetCode OJ 14Longest Common Prefix

LeetCode 1143. Longest Common Subsequence

Leetcode 14. Longest Common Prefix

LeetCode-Longest Common Prefix

leetcode (Longest Common Prefix)