【Leetcode 14】最長公共前綴

題目描述

在這裏插入圖片描述

解題思路

解法一:利用python中的set()函數和zip()函數

關於set()函數和zip()函數語法說明可見博客:https://blog.csdn.net/weixin_44549556/article/details/104267319

  • 通過zip函數可將列表打包成元組,進而比較列表中每個字符串的每個字符是否相等
  • 通過set函數可得到無重複的集合對象,則判斷該集合的長度是否爲1,爲1則代表該字符相等

python代碼

class Solution(object):
    def longestCommonPrefix(self, strs):
        res = ''
        # [(f,f,f),(l,l,l),(o,o,i),(w,w,g)]
        for c in zip(*strs):
            if len(set(c)) == 1:
                res = res + c[0]
            else:
                break
        return res
s = Solution()
print(s.longestCommonPrefix(["flower", "flow", "flight"]))

解法二:

python代碼

首先通過min函數找出長度最短的字符串,再遍歷最短字符串中的每個字符,與其餘字符串進行對比。

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ""
        if len(strs) == 0:
            return result
        # 取出最短的字符串
        flag_str = min(strs, key=len)
        # 原始列表中去除這個,避免自己和自己判斷
        strs.remove(flag_str)
        # 循環每一個最短字符串的字符,與列表的其他字符串進行比較
        for i, each_char in enumerate(flag_str):
            for each in strs:
            	# 只要發現不等就馬上退出
                if each[i] != each_char:
                    return result
            result += each_char
        return result
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章