LeetCode-14 - Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

Solution1

用第一個元素作為基準,每個元素都與第一個元素的前半部分作compare
算法復雜度為O(n2)

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if len(strs) == 0:
            return ""
        elif len(strs) == 1:
            return strs[0]
        else:
            count = 0
            while(True):
                for i in range(len(strs)):
                    try:
                        if not strs[i][count] == strs[0][count]:
                            return strs[0][:count]
                        else:
                            continue
                    except:
                        return strs[0][:count]
                count += 1

Solution2

將list中的每個元素的每個字符都分別zip在一起,然后透過set的len來看是否字符相等
算法復雜度為O(n)

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if len(strs) == 0:
            return ""

        for i, v in enumerate(zip(*strs)):
            if len(set(v)) > 1:
                return strs[0][:i]
        return strs[0]

反思

  1. zip函數用得不夠666
  2. set可以除重,len(set)的用法很妙
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容