leetcode 14最長公共字首

2021-09-12 13:59:48 字數 1769 閱讀 2246

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

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

示例 1

:輸入:

["flower"

,"flow"

,"flight"

]輸出:

"fl"

示例 2

:輸入:

["dog"

,"racecar"

,"car"

]輸出:

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

這道題看著很簡單,只要將列表前兩個元素進行對比,找出他們的公共子串,然後拿他們的公共子串和之後的元素進行對比,由於子串的長度不大,所以只需遍歷o(n*k)(最差情況)就可以了。但是題目的資料裡有很多坑,容易考慮不到,比如傳入列表元素為空,傳入列表元素只有乙個這些,導致我wa了好幾發才過的題,**如下

# 已經戰勝 42.80 % 的 python 提交記錄

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

# 輸出: "fl"

class

solution

(object):

deflongestcommonprefix

(self, strs)

:"""

:type strs: list[str]

:rtype: str

"""ans =

"" strs_lens =

len(strs)

if strs_lens ==0:

return

""if strs_lens ==1:

return strs[0]

else

:for i in

range

(min

(len

(strs[0]

),len(strs[1]

))):

if strs[0]

[i]== strs[1]

[i]:

ans += strs[0]

[i]else

:break

#到這裡就求出了前兩位的公共字串

for i in

range(2

, strs_lens):if

len(strs[i])==

0:return

"" lensx =

min(

len(ans)

,len

(strs[i]))

for j in

range

(lensx)

:if strs[i]

[j]== ans[j]

:if lensx <

len(ans)

: ans = ans[

:lensx]

continue

else

: ans = ans[

:j]break

if ans =="":

return

""else

:return ans

s = solution(

)ans = s.longestcommonprefix(

["flower"

,"flow"

,"flight"])

print

(ans)

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