美文网首页
最长公共前缀

最长公共前缀

作者: 极客匠 | 来源:发表于2019-12-03 23:20 被阅读0次

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

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

    示例 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
    

    相关文章

      网友评论

          本文标题:最长公共前缀

          本文链接:https://www.haomeiwen.com/subject/jdtkgctx.html