最長公共前綴
編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""
。
示例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就是最長公共前綴。