1. 程式人生 > 實用技巧 >[洛谷P2606] ZJOI2010 排列計數

[洛谷P2606] ZJOI2010 排列計數

編寫一個函式來查詢字串陣列中的最長公共字首。

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

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

利用python的Zip函式,zip()函式接受一系列可迭代物件作為引數,將不同物件中相對應的元素打包成一個元組(tuple),返回由這些元組組成的list列表,如果傳入的引數的長度不等,則返回的list列表的長度和傳入引數中最短物件的長度相同。舉例說明:

x = [1,2,3,4,5]
y = ['a','b','c','d']
xy = zip(x,y)
print xy
for a,b in zip(x,y):
    
print a print b

輸出:

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
1
a
2
b
3
c
4
d

zip(*iterable)使用說明:

ll = ["flower", "flow", "flqwe"]
zip(*ll)   返回的結果是什麼呢?

1、*xx在呼叫函式的時候是解包作用,因此:*ll ==> "flower", "flow", "flqwe"
2、zip(*ll) ==> zip("flower", "flow", "flqwe")這跟zip(a, b)沒什麼兩樣

則本題的解法可以用zip函式結合set實現:

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        s=''
        for i in zip(*strs):
            if len(set(i))==1:
                s=s+i[0]
            else:
                break
        return s