LeetCode14最长公共前缀:输入空字符串为何返回""而非None?
最长公共前缀函数返回值疑问解答
你提到的问题核心是:当传入包含空字符串的列表(比如[""])时,函数返回""而非None,不符合你对开头判断分支的预期,原因如下:
- 开头的
if len(strs) == 0 or strs is None:仅针对空列表或None的情况触发返回None,比如传入[]或者None才会走这个分支。 - 当你传入
[""]时,列表长度为1,既不是空列表也不是None,所以不会进入这个判断分支。 - 后续代码执行
p = len(min(strs, key=len)),这里取到的最短字符串就是空字符串,长度为0,因此循环for i in range(p)不会执行,直接返回初始定义的ans = ""。
另外补充:LeetCode第14题的题目要求中,当输入包含空字符串时,最长公共前缀本身就是空字符串,所以你当前代码的返回结果是符合题目要求的。如果确实需要在这种场景返回None,可以修改判断逻辑,加入对列表中空字符串的检查:
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: ans = "" if len(strs) == 0 or strs is None or "" in strs: return None p = len(min(strs,key=len)) for i in range(p): current = strs[0][i] for j in range(len(strs)): if current != strs[j][i]: return ans ans += current return ans
内容的提问来源于stack exchange,提问作者Milton Lee
相关产品推荐
相关产品推荐

