题解 | String Matching

String Matching

https://www.nowcoder.com/practice/00438b0bc9384ceeb65613346b42e88a

def getNext(s):
    next = [0] * len(s)
    next[0] = 0
    j = 0
    for i in range(1, len(s)):
        while j > 0 and s[i] != s[j]:
            j  = next[j-1]
        if s[i] == s[j]:
            j += 1
        next[i] = j
    next.insert(0, -1)
    return next

def kmp(s, t):
    i = 0
    j = 0
    next = getNext(t)
    #print(next)
    s = list(s)
    t = list(t)
    res = 0

    while i < len(s) and j < len(t):
        if (j == -1 or s[i] == t[j]):
            j += 1
            i += 1
        else:
            j = next[j]
        if j == len(t):
            res += 1
            j = next[j] 
    return res

s, t = input().split()
print(kmp(s, t))
    

全部评论

相关推荐

丿南烟丶:黑白模板吧,不要这样花哨的。 主要成就太空了,和获奖融在一起,写一两行就行了。 职业技能不要这样排,就传统的掌握精通什么什么然后举例补充的一些重要技术点。 自我介绍说实话也没啥用,可以删了。 把自己的两个项目方案细节补充上去,为什么这样设计,怎么设计,成果是什么按star法则来写 你要引导面试官来问你的技能和项目,你的获奖和自我介绍别人可能看都不看一眼或者不太在乎,重要的是展示你能干活的能力
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务