題目來源:https://leetcode-cn.com/problems/longest-common-prefix/python
編寫一個函數來查找字符串數組中的最長公共前綴。segmentfault
若是不存在公共前綴,返回空字符串 ""。數組
示例 1:微信
輸入: ["flower","flow","flight"] 輸出: "fl"
示例 2:app
輸入: ["dog","racecar","car"] 輸出: "" 解釋: 輸入不存在公共前綴。
說明:函數
全部輸入只包含小寫字母 a-z 。spa
3
,4
,得出字符串數組最長公共前綴。class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: '''找出字符串數組最長公共前綴 Args: strs: 傳入待匹配的字符串數組 Returns: 返回字符串數組中存在的最長公共前綴 不存在則返回空字符串 "" ''' # 若列表爲空,直接返回空字符 if not strs: return "" # 取首位字符串,以待與後面進行比較 prefix = strs[0] # 遍歷字符串數組,逐個比較 for i in range(1, len(strs)): # 比較兩字符串,找到公共前綴前,逐個比較 while strs[i].find(prefix) != 0: # 未找到公共前綴前,從末尾逐個刪減 prefix = prefix[0:len(prefix)-1] # 若無公共前綴,直接返回 if len(prefix) == 0: return "" return prefix
class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: '''找出字符串數組最長公共前綴 Args: strs: 傳入待匹配的字符串數組 Returns: 返回字符串數組中存在的最長公共前綴 不存在則返回空字符串 "" ''' # 利用 zip() 函數的特性,逐列比較字符串數組中的每一個字符串 prefix_len = [] # 用以保存共同字符的長度 for num,s in enumerate(zip(*strs)): # 利用 set() 去重複 # 若只保留 1 個字符,則表示該列相同 # 不然該列不一樣,直接跳出 if len(set(s)) == 1: prefix_len.append(num) else: break # 若是 prefix_len 爲空直接返回空字符串 # 不然截取任意字符串的 prefix_len 列表長度的字符,即爲最長公共前綴 return strs[0][:len(prefix_len)] if prefix_len else ""
以上就是本篇的主要內容3d
歡迎關注微信公衆號《書所集錄》