題目:
Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
For the purpose of this problem, we will return 0 when needle is an empty string.
給定兩個字串(haystack,needle),檢查needle是否在haystack內,若有回傳needle第一次出現時的index,若無則回傳-1,若needle為空,回傳0
用一些字串操作,這題會變得十分簡單
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if needle not in haystack:
return -1
if needle=="":
return 0
haystack=haystack.replace(needle," ")
for i in range(len(haystack)):
if haystack[i]==" ":
return i
先檢測needle是否在haystack內及needle是否為空字串
確定needle在haystack內後將needle replace成" "
最後再檢索" "的位置即可
最後執行時間為28ms(faster than 96.18%)
但這樣似乎有點偷吃步
在討論區有看到比較正規的解法
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if needle=="":
return 0
for i in range(len(haystack)-len(needle)+1):
if haystack[i:i+len(needle)]==needle:
return i
return -1
簡單來說就是偏暴力解,一個一個去對比
不過最後執行時間為31ms(faster than 91.34%),也不算太差
大概分享一下其他寫法
那我們下題見