測試開發工程師的每日演算法-Leecode 演算法題目第 14. 最長公共字首

MmoMartin發表於2020-06-15

題目難易程度: Easy
編寫一個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 ""。

示例 1:

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

示例 2:

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

思路:透過題意理解得到:輸入的字串列表中,每個字串都必須有一個共同的字首字串,若字串的同位置上的字元與其他字串上字元不等時,就返回公共字首,否則繼續。
解題程式碼如下,執行效率與儲存空間需要進行最佳化,以下是按照最常規思路編寫。

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        if  strs:
            strs_min_str = sorted(strs, key=lambda x:len(x))[0]
            sum_str = ''
            for i in range(len(strs_min_str)):
                for y in strs:
                    if strs_min_str[i] == y[i]:
                        pass
                    else:
                        return sum_str
                sum_str += strs_min_str[i]
            return sum_str
        return ''

相關文章