python leetcode 14最長公共字首

2021-09-11 10:02:44 字數 2441 閱讀 3806

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

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

示例 1:

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

輸出: "fl"

示例 2:

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

輸出: ""

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

說明:所有輸入只包含小寫字母 a-z 。

這題比較好理解,給定乙個列表,查詢列表中的公共字首

自己的想法是直接暴力法解決,將列表的第乙個值作為對比值,通過一層for迴圈不斷遍歷對比值與其他元素是否相等,如果相等則繼續對比,如果不等return比較過的值。

上**(40ms)擊敗12%使用者

1

class

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%

1

class

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 解法一 剛開...