leetcode 14 最長公共字首

2021-10-06 04:35:11 字數 1633 閱讀 4728

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

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

示例 1:

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

輸出: "fl"

示例 2:

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

輸出: ""

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

簡單樸素,逐一比較就行。

(1)首先可以確定的是最長字首的長度小於等於列表中最短字串的長度。

res <= min([len(each) for each in strs]
(2)找到列表中最短字串,然後以它為標準和其它(包括它自己)列表中的字串元素進行比較

1、遍歷的過程中,如果有乙個列表元素沒有匹配上,即當前字元不是所有列表字串元素的字首,

結束遍歷,返回滿足條件的字首。

2、如果當前字元是所有列表字串元素的字首,把當前字元加入到字首中去,遍歷下乙個字元

3、重複1、2過程,返回滿足條件的字首。

class solution:

def longestcommonprefix(self, strs: list[str]) -> str:

if len(strs) < 1:

return ''

length = [len(each) for each in strs]

idx = length.index(min(length))

template = strs[idx]

res = ''

for i in range(len(template)):

c = template[i]

for index,word in enumerate(strs):

if word[i] != c:

return res

res += c

return res

利用zip、和set。

(1)通過zip操作把列表解析成單字元元組

temp = zip(*(strs))

strs = ['abc','efg','jkl']

temp=['a','b','c'

'e','f','g'

'j','k','l']

實際上是 [('a','e','j'),('b','f','k'),('c','g','l')]

相當於把原來的字串按列鋪開。

(2)通過set操作,判斷每個經過zip解析的元組中元素的數目。

if len(set(c)) == 1:

res += c[0]

else:

break

class solution:

def longestcommonprefix(self, strs: list[str]) -> str:

res = ''

for c in zip(*(strs)):

if len(set(c)) == 1:

res += c[0]

else:

break

return res

LeetCode14最長公共字首

編寫乙個函式來查詢字串陣列中最長的公共字首字串。例如 輸出 ab 比較乙個字串陣列的最長公共字首,遍歷整個字串陣列,建立乙個字串用來儲存當前最長公共字串,逐個比較,不斷更新公共字串內容。情況比較多,考慮周全,不然可能會陣列溢位。公共字串的長度和當前比較字串的長度大小的比較,避免陣列越界,還有空字串的...

LeetCode 14 最長公共字首

編寫乙個函式來查詢字串陣列中最長的公共字首字串。用第乙個字串s,比較strs的每個字串的公共字首,並記錄字首有m位,之後輸出s的前m位字元即可。但是在輸出過程中,使用了如下的賦值方式 for int i 0 i m i ans i s i 在string型別中,內部的成員是private的,所以不能...

LeetCode14 最長公共字首

題目描述 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。如下 class solutio...