編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 ""。
示例 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...