Leetcode做題日記:28. 實現strStr()(PYTHON)
阿新 • • 發佈:2019-01-01
實現 strStr() 函式。
給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例 1:
輸入: haystack = “hello”, needle = “ll”
輸出: 2
示例 2:
輸入: haystack = “aaaaa”, needle = “bba”
輸出: -1
第一次的程式碼,只擊敗27.76%
上來先把h n打上來,可以少打很多字母,前面幾個if 是為了判斷幾個特殊的例子。遍歷h,如果發現和n中第一個字母相同的字母,標記為i,則表明有可能再h中存在n,所以開始從i開始到n的長度的字串依次比較,如果都相同就滿足題意,不相同就i=i+1
其實關於i的迭代,我最初的想法是
i=i+j
即如果這個片段不是的話,i從下一段開始,但是萬一n是‘ippip…’,就會錯過
h=haystack
n=needle
L1=len(h)
L2=len(n)
i=0
j=0
if L1==0 and L2==0:
return 0
if L1<L2 :
return -1
if L2==0:
return 0
while i <L1:
if h[i]== n[0] :
while j<L2:
if i+j==L1:#如果h都到頭了還沒找完n,返回-1
return -1
if h[i+j] !=n[j]:
break
j=j+1#判斷相符的個數
if j== L2:
return i
j=0 #寫在最後也行,然後i=i+1
i=i+j+1
return -1