【LeetCode】14. 最长公共前缀

1 问题

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

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

示例 1:

输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”

示例 2:

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

2 答案

自己写的

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        list_l = []
        for s in strs:
            list_l.append(len(s))
        min_len = min(list_l)

        is_True = True
        while min_len != -1:
            if min_len == 0:
                return ""
            
            for ss in strs:
                if ss[:min_len] != strs[len(strs)-1][:min_len]:
                    is_True = False

            if is_True == True:    
                return strs[len(strs)-1][:min_len]
            else:
                min_len -= 1
                is_True = True

在这里插入图片描述
官方解

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

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

字典序很妙

3 知识点

字典序(dictionary order),又称 字母序(alphabetical order),原意是表示英文单词在字典中的先后顺序,在计算机领域中扩展成两个任意字符串的大小关系。

https://blog.csdn.net/qq_37050329/article/details/86637183

字符串字典序的比较方法

在计算机中,两个字符串比较大小,是按照从左到右的顺序进行比较,如果第1位相等,就比较第2位,直至有一位可以比较出大小来,则不再继续比较。

https://blog.csdn.net/GoddessNaa/article/details/131048023

你可能感兴趣的:(LeetCode,Python,leetcode,算法)