編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 ""。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共字首。
說明:所有輸入只包含小寫字母 a-z 。
這題比較好理解,給定乙個列表,查詢列表中的公共字首
自己的想法是直接暴力法解決,將列表的第乙個值作為對比值,通過一層for迴圈不斷遍歷對比值與其他元素是否相等,如果相等則繼續對比,如果不等return比較過的值。
上**(40ms)擊敗12%使用者
1class
solution(object):
2def
longestcommonprefix(self, strs):
3"""
4:type strs: list[str]
5:rtype: str
6"""
7 sig=true
8 i=0
9if(strs== ): #
判斷是否為空
10return
""11
if(len(strs)==1): #
判斷是否只有乙個值
12return
strs[0]
13if (""
in strs): #
判斷有沒有空值
14return
""15
while(sig==true ): #
sig是乙個bool型別值 true繼續判斷 false中斷返回
16if(len(strs[0])<=i): #
判斷對比值是否越界
17return
strs[0][0:i]
18 temp=strs[0][i] #
第i個字元
19for j in strs[1:]:
20if(temp!=j[i] ): #
如果第i字元不匹配 則返回前i-1個字元
21return
strs[0][0:i]
22elif(temp==j[i] and len(j)==i+1): #
如果第i字元為最後乙個一字母,則不繼續對比,返回前i個
23 sig=false
24 k=i
25 i += 1
26return strs[0][0:k+1]
27if
__name__=="
__main__":
28 s=solution()
29 li=["
flower
","flo
","flight"]
30print(s.longestcommonprefix(li))
上**(28ms)擊敗94%
1class
solution(object):
2def
longestcommonprefix(self, strs):
3"""
4:type strs: list[str]
5:rtype: str
6"""7if
not strs: return""8
if len(strs) == 1: return
strs[0]910
strs.sort()
11 p = ''
12for x, y in zip(strs[0], strs[-1]):
13if x ==y:
14 p +=x
15else:16
break
17returnp18
if__name__=="
__main__":
19 s=solution()
20 li=["
flower
","fl
","flight"]
21print(s.longestcommonprefix(li))
解釋一下:
前兩句沒啥好說的,判斷特殊情況
然後進行排序,直接將第乙個元素和最後乙個元素對比,提取出相同字元。
特點:排序後的列表,不需要對比中間的元素 直接對比最後兩個即可。
posted @
2019-02-26 12:57
劍峰隨心 閱讀(
...)
編輯收藏
python leetcode 1 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
Python LeetCode 1 兩數之和
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...
1 兩數之和 Python LeetCode
剛開始接觸演算法方面,好多都不懂,打算每刷一題就整理一下 給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解法一 剛開...