LeetCode14 最長公共字首

2021-09-27 10:45:09 字數 1921 閱讀 9021

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

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

示例 1:

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

輸出:"fl"

示例 2:

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

輸出:""

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

# 解法一:水平掃瞄法 72ms

class solution:

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

'''1.list長度小於1,返回''

2.list長度為1的情況面試時需要問清楚

2.3個及以上元素時,只要有1個元素不包含公共字首,返回''

3.不同字串長度不一致,考慮超出邊界值情況

'''if not strs:

return ''

if len(strs) == 1:

return strs[0]

ref_str = strs[0]

res_str = ''

for i, i_str in enumerate(ref_str):

for j in range(1, len(strs)):

if i >= len(strs[j]):

return res_str

elif strs[j][i] != i_str:

return res_str

else:

pass

res_str += i_str

return res_str

# 解法二:利用zip函式 64ms

class solution:

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

'''1.list長度小於1,返回''

2.list長度為1的情況面試時需要問清楚

2.3個及以上元素時,只要有1個元素不包含公共字首,返回''

3.不同字串長度不一致,考慮超出邊界值情況

'''s = zip(*strs)

r = [len(set(c)) == 1 for c in s] + [false]

if strs:

s = r.index(false)

return strs[0][:s]

else:

return ''

# 解法三:利用zip+排序 44ms

class solution:

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

'''1.list長度小於1,返回''

2.list長度為1的情況面試時需要問清楚

2.3個及以上元素時,只要有1個元素不包含公共字首,返回''

3.不同字串長度不一致,考慮超出邊界值情況

'''if len(strs) == 0:

return ""

if len(strs) == 1:

return strs[0]

strs.sort()

p = ""

for x, y in zip(strs[0], strs[-1]):

if x == y:

p += x

else:

break

return p

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