美文网首页
leetcode--14--最长公共前缀

leetcode--14--最长公共前缀

作者: minningl | 来源:发表于2020-07-12 09:50 被阅读0次

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

链接:https://leetcode-cn.com/problems/longest-common-prefix

思路:
1、依次同时遍历数组中的字符串,如果字符串前缀一样则继续遍历,否则返回上一轮前缀的结果

Python代码:

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if not strs:
            return ""
        ret = ""
        for i in range(len(strs[0])):
            pref = strs[0][:i+1]
            for str in strs:
                if str[:i+1] != pref:
                    return ret
            ret = pref
        return ret

C++代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (strs.size()==0) return "";

        string ret="";
        for (int i=0; i<strs[0].size(); i++){
            string pref = strs[0].substr(0,i+1);
            for (string str : strs){
                if (str.substr(0,i+1)!=pref) return ret;
            }
            ret = pref;
        }
        return ret;
    }
};

思路2:
1、找到strs中最大、最小的两个字符串,比较这两个字符串的最长公共前缀即可

Python代码:

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if not strs:
            return ""
        mmin = min(strs)
        mmax = max(strs)

        ret = ""
        for i,item in enumerate(mmin):
            if item!=mmax[i]:
                return ret
            ret = mmin[:i+1]
        return ret

C++代码:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if (strs.size()==0) return "";

        string mmin = *max_element(strs.begin(), strs.end());
        string mmax = *min_element(strs.begin(), strs.end());

        string ret = "";
        for (int i=0; i<mmin.size(); i++){
            if (mmin[i]!=mmax[i]) return ret;
            ret = mmin.substr(0,i+1);
        }
        return ret;
    }
};

相关文章

  • leetcode--14--最长公共前缀

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

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

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

  • 14. 最长公共前缀

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

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

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

  • Swift 最长公共前缀 - LeetCode

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

  • leetcode探索之旅(14)

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

  • Leetcode 14 最长公共前缀

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

  • LeetCodeSwift 14.Longest Common

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

  • [day4] [LeetCode] [title14,122]

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

  • 14. 最长公共前缀

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

网友评论

      本文标题:leetcode--14--最长公共前缀

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