代码随想录一一一字符串一一一实现 strStr()
题目来源自leetcode与代码随想录
(1)28. 实现 strStr()
题目描述:
长串中找出字串是否存在,存在返回位置 不存咋返回-1
解题思路:
偷懒解法,得益于python,可以直接使用切片完成匹配操作
科班解法:KMP算法
class Solution:def strStr(self, haystack: str, needle: str) -> int:a = len(needle)b = len(haystack)if a == 0:return 0next = self.getnext(a, needle)p =- 1for j in range(b):while p>=0 and needle[p+1] != haystack[j]:p = next[p]if needle[p+1] == haystack[j]:p += 1if p == a-1:return j-a+1return -1def getnext(self,a,needle):next = ['' for i in range(a)]k =- 1next[0] = kfor i in range(1, len(needle)):while (k>-1 and needle[k+1] != needle[i]):k = next[k]if needle[k+1] == needle[i]:k += 1next[i] = kreturn next
class Solution:def strStr(self, haystack: str, needle: str) -> int:return haystack.find(needle)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
