方法一:使用python的str内置方法find
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
return haystack.find(needle)
方法二: 暴力匹配:可以想象成把字符串haystack固定,字符串needle从haystack的最左端开始对齐,如果对齐的部分完全相同则匹配成功,否则将needle整体往右移动1位,继续检查对齐部分,如此下去。(注:实质是haystack每次往后移动一位)
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
m=len(haystack)
n=len(needle)
for i in range(m-n+1):
if haystack[i:i+n]==needle:
return i
return -1
方法三:kmp算法(方法二可看作朴素的kmp算法)