方法一:普通双指针
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
p1, p2 = 0, 0
while p1 < len(haystack) - len(needle) + 1:
temp = p1
while haystack[p1] == needle[p2]:
p1 += 1
p2 += 1
if p2 == len(needle):
return temp
p1 = temp
p2 = 0
p1 += 1
return -1
方法二:暴力法(切片)
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
#字符串切片
for i in range(len(haystack) - len(needle) + 1):
if haystack[i:i+len(needle)] == needle:
return i
return -1
易错点:字符串中每一个字符都可能成为与needle首字母匹配的字符,所以应该考虑haystack中每一个字符作为匹配的首字母(容易使用遍历字符串haystack,但是没有考虑每个字符成为匹配needle首字母的可能)