《Leetcode》14.最長公共前綴

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 ""

示例 1:

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

示例 2:

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

思路:

1、題目分析

本題的意思就是統計一個列表種所有單詞公用的最長前綴是什麼。

2、解題分析

  • 如果列表長度等於0的話直接返回空字符串
  • 如果列表長度不小於0的話用一下兩種方法去做
    • zip函數法
      • 聲明一個空字符串
      • 使用zip函數將列表進行解壓,返回一個二維矩陣,每行都是一個列表,列表包含所有字符串的首字母
      • 將這個列表轉換爲集合
        • 如果長度等於1,說明有公共前綴
        • 如果長度大於1,break退出循環
    • 遍歷法
      • 先遍歷一遍找到字符串中所有字符串中的最小長度,聲明一個空字符串
      • 使用兩層循環去遍歷
        • 第一層循環用來控制比較的輪數
        • 第二層循環用來比較是不是字母都是一樣的
      • 如果第一個字符串的字母和後面的不相等直接返回字符串,如果相等繼續遍歷

代碼如下:

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        
        #方法2
        if len(strs)==0:
            return ''
        index = len(strs[0])
        for i in range(1,len(strs)):
            index = min(index,len(strs[i]))
        res=''
        for i in range(index):
            temp = strs[0][i]
            for j in range(1,len(strs)):
                if temp!=strs[j][i]:
                    return res
            res+=temp
        return res
        #方法1 
        s = ""
        for i in zip(*strs):
            if len(set(i)) == 1:
                s += i[0]
            else:
                break           
        return s

總結:zip函數十分魔法,在Python之zip方法有介紹。

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