Leetcode27最長公共字首

2021-10-06 08:00:38 字數 1553 閱讀 8779

# encoding=utf-8

"""編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 ""。

示例 1:

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

輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]

輸出: ""

解釋: 輸入不存在公共字首。

說明:所有輸入只包含小寫字母 a-z 。

""""""

演算法:處理特例:列表為空

首先按照字串長度公升序排列

遍歷第乙個字串的每個字元,

如果後面的每個字串同一位置的字元相同,則新增到res;

否則return

複雜度分析:

時間複雜度:o(s),s 是所有字串中字元數量的總和。

最壞的情況下,n 個字串都是相同的。演算法會將str0與其他字串都做一次比較。這樣就會進行s次字元比較。

空間複雜度:o(1),我們只需要使用常數級別的額外空間。

"""class solution(object):

def longestcommonprefix(self, strs):

""":type strs: list[str]

:rtype: str

"""if not strs:

return ''

# 定義結果list

res =

# 按字串長度排序,取第乙個最短的字串為標準

strs.sort(key = len)

str0_len = len(strs[0])

for each_letter_idx in range(str0_len):

# 遍歷排序後的strs的第乙個字串的每個字元,

for each_str in strs[1:]:

# 遍歷strs第一到最後乙個字串

if strs[0][each_letter_idx] != each_str[each_letter_idx]:

# 如果不相等,則退出迴圈,返回結果

return "".join(res)

else:

continue

# 如果後面的每個字串同一位置的字元相同,則新增到res;

# 返回結果字串

return "".join(res)

s = solution()

print(s.longestcommonprefix(["flower","flow","flight"]))

print(s.longestcommonprefix(["dog","racecar","car"]))

print(s.longestcommonprefix())

print(s.longestcommonprefix([""]))

print(s.longestcommonprefix(["aca", "cba"]))

print(s.longestcommonprefix(["aca", "aba"]))

最長公共字首 LeetCode

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例1 輸入 flower flow flight 輸出 fl 示例1 輸入 dog rececar car 輸出 說明 所有輸入只包含小寫字母 a z。首先找到長度最小的字串 minstring,假設此字串為公共字首,依次...

leetcode 最長公共字首

題目 編寫乙個函式來查詢字串陣列中的最長公共字首,如果不存在公公字首,則返回空字串 示例 輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 思路 第一步 令乙個變數等於其中乙個 的首字母,依次看後面的字串是否也有,若沒有跳出整層迴圈,若有計入陣列中 ...

leetcode 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。var longestcommonprefix function strs s...