Leetcode问题14.最长公共前缀(Python)

ee7vknir  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(138)

我试图解决这个问题(你可以在这里阅读描述:https://leetcode.com/problems/longest-common-prefix/)下面是我编写的代码,它给出了strs列表中第一个字符串的prefix值,并将prefix与列表中的每个字符串进行比较,弹出所有不相等的字符。

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        prefix = strs[0][0]
        for i in range(len(strs)):
            for j in range(len(prefix)):
                if strs[i][j] != prefix[j]:
                    prefix.pop(prefix[j])
        return prefix

但是这段代码在第一个测试用例中失败了,strs = ["flower","flow","flight"]预期输出是"fl",而我的代码只返回"f"我很难找到解决方案中的问题,也许你能帮上忙?

zsbz8rwp

zsbz8rwp1#

使用zip并行迭代字符:

strs = ["flower", "flow", "flight"]

n = 0
for chars in zip(*strs):
    if len(set(chars)) > 1:
        break
    n += 1

# length
print(n) # 2

# prefix
print(strs[0][:n]) # fl

与使用itertools.takewhile的一行程序类似的方法:

from itertools import takewhile

prefix = ''.join([x[0] for x in takewhile(lambda x: len(set(x)) == 1, zip(*strs))])

相关问题