首页 > 其他分享 >KMP

KMP

时间:2024-03-30 17:12:51浏览次数:21  
标签:pmt range len while KMP input

PMT:部分匹配表(Partial Match Table)
表示含义:t[0,i] 的前后缀最大匹配长度
image

s = input()
t = input()
n,m = len(s),len(t)
pmt = [0] * m
c = 0
for i in range(1,m):
    x = t[i]
    while c and t[c] != x:
        c = pmt[c - 1]
    if t[c] == x:
        c += 1
    pmt[i] = c

c = 0
for i in range(n):
    x = s[i]
    while c and t[c] != x:
        c = pmt[c - 1]
    if t[c] == x:
        c += 1
    if c == m:
        print(i - c + 1)
        c = pmt[c - 1]

"""
input:
12341234
1234
output:
0
4
"""

标签:pmt,range,len,while,KMP,input
From: https://www.cnblogs.com/gebeng/p/18105748

相关文章

  • 灵茶之KMP01
    灵茶之KMP01题目链接https://codeforces.com/problemset/problem/1137/B题目大意输入两个长度均≤\(5*10^5\)的字符串s和字符串t,只包含'0'和'1'。重排s中的字符,使得s中有尽量多的子串等于t。输出重排后的s。如果有多个答案,输出任意一个。思路贪心的思路......
  • KMP算法
    对于字符串“abababca”,它的next如下表所示:voidget_next(SStringT,int*next){inti=1,j=0;next[1]=0;//next[1]的值总是0while(i<T.length){if(j==0||T.ch[i]==T.ch[j]){//如果j处于0位或者,俩字符相等++i......
  • C语言查找-----------BF算法&&KMP算法
    1.问题引入有一个主字符串,有一个子字符串,要求我们寻找子字符串在主字符串里面开始出现的位置;2.BF算法BF算法就是暴力算法,这个做法虽然效率不高,但是按照我们传统的思路依然能够得到结果,接下来我们使用C语言实现这个查找的过程;#include<stdio.h>#include<assert.h>#includ......
  • 08天【代码随想录算法训练营34期】第四章 字符串part02(KMP)
    KMP算法解决字符串匹配问题文本串aabaabaaf模式串aabaaf问:模式串是否在文本串中出现过?1)暴力解法,ptr指向文本串index0,遍历一遍发现不匹配,ptr再移向index1,遍历……依次重复,直到ptr指向32)KMP算法,ptr指向文本串index0,遍历到f发现不匹配,由于“aa”在字符串中index3和4时也出现......
  • KMP算法
    ​ 应用于字符串匹配,主要思想就是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,利用这些信息避免从头再做匹配。如何利用已经匹配的文本内容?前缀表前缀表:用来回退,记录模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。记录下标i之前(包括i)的字符串......
  • 菜狗的KMP学习
    为什么我们要学习KMP呢?这就不得不说起当年暑假在校队集训的时候,苦逼做不出题目的痛苦时光了。三个人看着题目中字符串匹配的那个环节,思索了整整三个小时。不得不说,从0到1,远比在前人的肩膀上前行要难得多。真不知的这些变态大佬是怎么想出来的。先来提及一下,当时我们用人脑想出......
  • 蓝桥杯算法基础(29)字符串匹配(RabinKarp)(KMP)(前缀树,字典树,trie,后缀数组,高度数组)
     RabinKarpRabinKarpS:ABABABm个P:ABBn个1.朴素算法,挨个匹配2.哈希法hash->滚动哈希c0*31^2+c1*31^1+c2类似于进制的求法求hash值(c0*31+c1)*31+c2hash(p)=o(n)hash(s)=o(m*n)privatestaticvoidmatch(Stringp,Strings){longhash_p=hash(p);......
  • 使用verillog编写KMP字符串匹配算法
    设计思路如下:定义模块的输入输出信号:包括时钟信号clk、复位信号rst、模式串pattern、文本串text以及输出信号match。定义所需寄存器和变量:使用寄存器来存储状态机的状态以及其他控制变量,如模式串数组P、失配函数数组F、模式串位置p_index、文本串位置t_index等。在时钟......
  • 【字符串匹配】BF与KMP算法
    一、字符串匹配问题字符串匹配问题是指在一个主文本字符串中查找一个指定的模式字符串,并确定模式字符串在主文本中出现的位置。这个问题在计算机科学中非常常见,尤其是在文本处理、数据搜索和生物信息学等领域。字符串匹配问题通常涉及到以下几个方面:模式识别:识别主文本中是......
  • 数据结构(五)kmp---以题为例
    给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。输入格式第一行输入整数 N,表示字符串 P 的长度。第二行输入字符串 P。第......