【LeetCode】zip()函數簡單實現“最長公共前綴”

最長公共前綴

編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""
示例1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。

注意:所有輸入只包含小寫字母 a-z

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

由題意知,在字符串列表中查找字符串的最長公共前綴,需要對字符串進行一一比較,只保留相同的字符前綴。因此可以採用Python的內置函數zip()。zip()函數用於將可迭代的對象作爲參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓爲列表。該題中,zip()函數將字符串數組中每個字符串打包成一個元組,然後*操作符將每個元組中的字符串一一拆解並重新組合成一個字符列表,通過for循環遍歷可以得到字符列表,通過set()將該列表轉換爲集合可以達到去重的目的,若集合長度爲1,則說明該字符列表的字符爲同一個字符,也就是說,該字符爲字符串元組的公共前綴,將該字符添加到初始化爲空字符串的字符串s,如果遇到字符集合長度不爲1則終止遍歷,最後返回的字符串s就是最長公共前綴。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章