最長公共前綴

題目描述:python

編寫一個函數來查找字符串數組中的最長公共前綴。數組

若是不存在公共前綴,返回空字符串 ""函數

示例 1:spa

輸入: ["flower","flow","flight"]
輸出: "fl"

示例 2:code

輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

解題思路:blog

一、利用python的max()和min(),在Python裏字符串是能夠比較的,按照ascII值排,舉例abb, aba,abac,最大爲abb,最小爲aba。ip

因此只須要比較最大最小的公共前綴就是整個數組的公共前綴字符串

    def longestCommonPrefix(self, strs):
        if not strs: return ""
        s1 = min(strs)
        s2 = max(strs)
        for i,x in enumerate(s1):
            if x != s2[i]:
                return s2[:i]
        return s1

二、利用python的zip函數,把str當作list而後把輸入當作二維數組,左對齊縱向壓縮,而後把每項利用集合去重,以後遍歷list中找到元素長度大於1以前的就是公共前綴class

    def longestCommonPrefix(self, strs):
        if not strs: return ""
        ss = list(map(set, zip(*strs)))
        res = ""
        for i, x in enumerate(ss):
            x = list(x)
            if len(x) > 1:
                break
            res = res + x[0]
        return res
相關文章
相關標籤/搜索