实现 strStr()。
返回蕴含在 haystack 中的 needle 的第一个字符的索引,如果 needle 不是 haystack 的一部分则返回 -1 。
例 1:
输入: haystack = "hello", needle = "ll" 输出: 2
例 2:
输入: haystack = "aaaaa", needle = "bba" 输出: -1
1.双下标:
class Solution:
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
n = len(haystack)
m = len(needle)
i = 0
j = 0
while i < m and j < n:
if needle[i] == haystack[j]:
i += 1
j += 1
else:
j = j -i +1
i = 0
if i == m:
return j - i
return -1
2.切片的方法
class Solution:
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
if needle == "":return 0
if needle == haystack:return 0
n = len(haystack)
m = len(needle)
for i in range(0, n-m+1):
if haystack[i:i+m] == needle:
return i
return -1
3.其实这个可以用无回溯的KMP算法~~参照相关书籍吧