最长公共前缀

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

解题思路

解法一

遍历每一个单词,取每一个单词同一个位置的字母,查看是否相同

利用好zip和set

zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回元组组成的列表

set()是一个无序的不重复的元素序列

  1. 取每一个元素的同一位置的字母,放到set中
  2. 如果set的长度 == 1,则代表这个位置上的字母相同,否则跳过
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ''
        for temp in zip(*strs):
            temp_set = set(temp)
            if len(temp_set) == 1:
                result += temp[0]
            else:
                break
        return result

解法二

  1. 取一个单词s作为默认前缀t

  2. t与后面的单词比较,取出t与每一个单词相同的最长前缀。

  3. 遍历字符串列表,重复2的操作

class Solution:
    def longestCommonPrefix(self, s: List[str]) -> str:
        if not s:
            return ""
        res = s[0]
        i = 1
        while i < len(s):
            while s[i].find(res) != 0:
                res = res[0:len(res)-1]
            i += 1
        return res

你可能感兴趣的:(最长公共前缀)