首页 > 其他 > 详细

Leetcode 28. 实现 strStr()

时间:2019-12-04 14:24:57      阅读:67      评论:0      收藏:0      [点我收藏+]
class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
        def kmp_nextval(needle):
            nextval=[]
            i,j=0,-1
            nextval.append(j)
            while len(nextval)<len(needle):
                if j==-1 or needle[i]==needle[j]:
                    i,j=i+1,j+1
                    nextval.append(nextval[j] if needle[i]==needle[j] else j)
                else:
                    j=nextval[j]
            return nextval
        nextval=kmp_nextval(needle)
        i,j=0,0
        while j<len(needle) and i<len(haystack):
            if j==-1 or haystack[i]==needle[j]:
                i,j=i+1,j+1
            else:
                j=nextval[j]
        if j==len(needle):
            return i-j
        else:
            return -1                

Leetcode 28. 实现 strStr()

原文:https://www.cnblogs.com/ximelon/p/11982212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!