题目:https://leetcode.cn/problems/longest-common-prefix/description/?envType=study-plan-v2&envId=top-interview-150

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

求问为什么这种写法可以通过?

看作者的想法好像是想找出最长和最短的两个字符,通过找到是否存在公前缀的骚方法去判断全部字符,不过这种解法会存在一个漏洞就是当 strs=["flower","flow","flight"],找出来的最长会是 flower。而且找最长和最短字符应该是这样写 “min(strs,key=len)”,直接 min 和 max 比较的是字符对应的 ASCII 码。

但是目前很骚的是,这样写居然通过了全部测试,当用例是 strs=["flower","flow","flight"] 时,min(strs) 是等于 “flight” 避开了这个用例,,,,,,看不懂。求下大佬解释下这解法的意思,看晕了😂


↙↙↙阅读原文可查看相关链接,并与作者交流