Longest Common Prefix[LeetCode/Python3/Easy]

 


題目

在一個字串陣列中,找出最長的公共前綴字串。

如果沒有公共前綴,回傳空字串 ""。

範例1:

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

範例2:

輸入: strs = ["dog","racecar","car"]
輸出: ""
說明: 輸入字串中沒有公共前綴。

限制條件:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 僅包含小寫英文字母。

我的答案

直覺答案

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        
        def text_length(text):
            return len(text)

        strs.sort(key=text_length)

        prefix=''
        for j in range(len(strs[0])):
            prefix=prefix+strs[0][j]
            for i in range(1,len(strs)):
                if prefix == strs[i][:j+1]:
                    pass
                else:
                    if prefix:
                        return prefix[:len(prefix)-1]
                    else:
                        return ""
        
        return prefix

可憐的performance😂

改善後的解答

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:

        short=min(strs, key=len)
        strs.remove(short)

        prefix=''
        
        for j in range(len(short)):
            prefix=prefix+short[j]
            for i in range(len(strs)):
                if prefix == strs[i][:j+1]:
                    pass
                else:
                    if prefix:
                        return prefix[:-1]
                    else:
                        return ""
        
        return prefix

好吧!至少時間複雜度改善了!不使用sort可以大幅改善時間複雜度!


留言

這個網誌中的熱門文章

[理財/記帳]google表單結合iphone捷徑 自製記帳app

[理財/記帳]利用google表單記帳雲端化 - 免費模板下載@ Mimi's learning notes

[理財/記帳]懶人記帳-現金流+信用卡管理記帳法-不用天天記帳