leetcode 第14题(最长公共前缀子串)

445 阅读1分钟

给定一个字符串列表,输出列表中所有字符串的最长公共前缀子串,如果没有公共前缀子串,返回""


例:

输入:["flower", "flow", "flight"]

返回:“fl”

输入:["dog", "racecar", "car"]

返回 : ""


 解法1

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ''
        MinLen = sorted(map(len, strs))[0]
        
        result = []
        
        for i in range(MinLen):
            temp = [v[i] for v in strs]
            if temp[1:] == temp[:-1]:
                result.append(temp[0])
            else:
                break
        
        return ''.join(result)

利用列表的切片操作,判断列表中的值是否都相等


解法2

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ''
        for v in zip(*strs):
            if len(set(v)) == 1:
                result += v[0]
            else:
                break
        
        return result


利用内建对象 zip,set