天天看点

《算法小白历险记》3.最长公共前缀【python-简单】

🍅 粉丝专属福利:简历模板、PPT模板、学习资料、面试题库。直接去文末领取

🍅 如觉得文章不错,欢迎点赞、收藏、评论

题目:

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

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

 

示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:

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

提示:

1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成      

来源:力扣(LeetCode)

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

我的笨办法:

思路:找出最短字符串,以此作为最大角标位。然后遍历对比第一个元素。

《算法小白历险记》3.最长公共前缀【python-简单】
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        com = ''
        str_min = min([len(str) for str in strs])
        for i in range(str_min):
            one = [str[i] for str in strs]
            if len(set(one))==1:
                com = com + one[0]
            else:
                break
        return com      

大神的办法:

解题思路

先找出数组中字典序最小和最大的字符串,最长公共前缀即为这两个字符串的公共前缀

《算法小白历险记》3.最长公共前缀【python-简单】
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs: return ""
        str0 = min(strs)
        str1 = max(strs)
        for i in range(len(str0)):
            if str0[i] != str1[i]:
                return str0[:i]
        return str0      

鬼才!可太秀了。

粉丝专属福利