题目描述
我的解法
简单的遍历寻找,虽然一看到这一题就想到了KMP算法,但是全都忘记了。。。
class Solution:
def strStr(self, haystack, needle):
if needle == "":
return 0
for pos in range(len(haystack)):
if needle == haystack[pos:pos+len(needle)]:
return pos
return -1
最优解法
大众解法
比例最高的算法是直接调用字符串的find函数,一步到位。
class Solution:
def strStr(self, haystack, needle):
return haystack.find(needle)
最优解法
好像只是加了个去尾的判断,为啥不用KMP算法呢…
class Solution:
def strStr(self, haystack, needle):
if needle == "":
return 0
edge = len(haystack)
length = len(needle)
for i in range(len(haystack)):
if haystack[i] == needle[0]:
if i + length > edge:
return -1
if haystack[i:i+length] == needle:
return i
return -1
网友评论