leetcode 14 最長公共字首python

2021-09-11 06:33:55 字數 2411 閱讀 7084

縱向比較,利用乙個for迴圈的巢狀,內層迴圈控制列表的位置,外層迴圈控制列表裡單個元素的每個字母位置,例如strs[1][2]的含義就是:列表裡第二個單詞的第三個字母比較

1.找到列表中最短的元素,求出它的長度

2.縱向比較,利用flag作為乙個參考,當flag為0,就說明有不相同的字母了,就不是公共字首

class solution:

def longestcommonprefix(self, strs):

""":type strs: list[str]

:rtype: str

"""if len(strs) >= 1:

//初始化min_len

min_len = len(strs[0])

//獲取最短的字串長度

for tmp_str in strs:

min_len = len(tmp_str) if(len(tmp_str) < min_len) else min_len

out_str = ""

//開始進行縱向掃瞄

for i in range(min_len):

flag = 1

for j in range(len(strs)):

//第乙個字串作為比較標準,其實利用第幾個都可以,因為限制了i最短的元素長度

if strs[j][i] != strs[0][i] :

flag = 0

break

if flag:

out_str += strs[0][i]

else:

break

return out_str

return ""

class solution:

def longestcommonprefix(self, strs):

""":type strs: list[str]

:rtype: str

"""res = ""

if len(strs) == 0:

return ""

for each in zip(*strs):#zip()函式用於將可迭代物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表

if len(set(each)) == 1:#利用集合建立乙個無序不重複元素集

res += each[0]

else:

return res

return res

1.len(list)函式可以獲得list元素的個數

2.對列表操作時

list = ['michael', 'sarah', 'tracy']
list[1][2] = r

可以通過這種方式取到列表中元素內部的元素

3.python的內建zip()函式:

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 * 號操作符,可以將元組解壓為列表。

下面是zip的使用

>>>a = [1,2,3]

>>> b = [4,5,6]

>>> c = [4,5,6,7,8]

>>> zipped = zip(a,b) # 打包為元組的列表

[(1, 4), (2, 5), (3, 6)]

>>> zip(a,c) # 元素個數與最短的列表一致

[(1, 4), (2, 5), (3, 6)]

>>> zip(*zipped) # 與 zip 相反,*zipped 可理解為解壓,返回二維矩陣式

[(1, 2, 3), (4, 5, 6)]

3.python set() 函式:

set() 函式建立乙個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。

用法:

>>>x = set('runoob')

>>> y = set('google')

>>> x, y

(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重複的被刪除

>>> x & y # 交集

set(['o'])

>>> x | y # 並集

set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])

>>> x - y # 差集

set(['r', 'b', 'u', 'n'])

>>>

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...