力扣題目 實現 strStr

2021-10-05 22:56:06 字數 1700 閱讀 5460

題目:給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 (從0開始)。如果不存在,則返回 -1。

解題思路:

1.對各種極端的情況進行處理(比如,原字串長度比要尋找的字串短,空字串,以及兩個字串本來就相同)

2.對一般的字串的操作 (簡略代表 a:原字串 b : 要尋找的字串

①對原字串從頭到尾進行迴圈,如果找到就退出迴圈

②當查詢到 a的字元與 b的首字元相同,那就繼續探查,如果發現不同,則退出,如果完全相同,則儲存下標並退出

class

solution

:def

strstr

(self, haystack:

str, needle:

str)

->

int:

len_hay =

len(haystack)

len_need =

len(needle)

num =-1

#對極端的情況進行判斷

if len_hay

return-1

if len_need ==

0or len_hay ==0:

return

0if haystack == needle:

return

0#對一般的情況進行判斷

for i in

range(0

,len_hay-len_need+1)

:while haystack[i]

== needle[0]

:#k充當計數器的作用,判斷a是不是完全擬合了b

k =0for j in

range(0

,len_need)

:if haystack[j+i]

== needle[j]

: k +=

1# continue

# print(k)

else

:break

#如果k的大小等於b的長度,說明完全擬合,儲存下標

if k == len_need:

num = i

break

#當下標變化了之後,說明已經找到相應字串,直接break

if num!=-1

:break

return num

使用切片的方法

class

solution

:def

strstr

(self, haystack:

'str'

, needle:

'str')-

>

'int'

:for i in

range(0

,len

(haystack)

-len

(needle)+1

):if haystack[i:i+

len(needle)

]== needle:

return i

return-1

8/

力扣28實現strStr

概述 這道題是要在 haystack 字串中找到 needle 字串。下面會給出的三種解法,這三種解法都基於滑動視窗。子串逐一比較的解法最簡單,將長度為 l 的滑動視窗沿著 haystack 字串逐步移動,並將視窗內的子串與 needle 字串相比較,時間複雜度為 o n l l o n l l 顯...

LeetCode題目 實現 strStr

實現 strstr 函式。給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。這題比較簡單,用的也是很常規的方法,注意haystack長度小於needle的情況,還有needle為空的情況...

力扣題目總結

135.分發糖果 根據規則只需要滿足每個人至少有乙個糖果,且前乙個的評分如果比後乙個高就需要它的糖果更多 但是只有一遍的話會出現bug,因為每次對比可能會使自身糖果數發生改變從而導致前乙個的糖果數不準確,此時我們需要從後往前再來一遍再進行一次遍歷修正。intcandy int ratings,int...