首页 > 编程语言 >KMP算法--模板

KMP算法--模板

时间:2023-04-03 22:22:13浏览次数:35  
标签:-- pattern next ++ int KMP 模板

生成 Pattern 的字符串的 next 数组,长度为 m+1

点击查看代码
void getNext(vector<int>& next, string& pattern) {
      int n = pattern.size();
      for (int j = 0, k = -1; j < n; ) {
          if (k == -1 || pattern[j] == pattern[k]) next[++j] = ++k;
          else k = next[k];
      }
      return;
}
----

将 字符串 cur 与 模板串 s 进行匹配

点击查看代码
for (int i = 0, j = 0; i < n;) {
    if (j == -1 || cur[i] == s[j]) {
        ++i;
        ++j;
        if (j == m) {
            // 匹配完成,进入下一次匹配
            j = next[m];
            return true;
        }
    } else {
        j = next[j];
    }
}

标签:--,pattern,next,++,int,KMP,模板
From: https://www.cnblogs.com/besnnad/p/17284685.html

相关文章

  • 判断100内的素数
    #include<stdio.h>#include<math.h>intmain(){inti=0;for(i=1;i<=100;i++){intj=0;for(j=2;j<=sqrt(double(i));j++){if(i%j==0){break;}}if(j>sqrt(double(i))){printf("%d",i);}}return0;}  问题:    在运行......
  • save配置完成RDB
      save:900秒有1个key发生变化就存300秒有10个key发生变化就存60秒有10000个key发生变化就存  ......
  • 1080. 根到叶路径上的不足节点
    题目描述给了一个二叉树,给了不足节点的定义(所有经过该节点的从跟到叶子的路径和如果都小于limt)需要删除所有的不足节点,返回最终的根节点f1分治+dfs基本分析从树上删除一个点,怎么操作方便?父节点删除比自己删除自己方便以上信息给了什么启示?dfs中给父节点返回自己可以删除的......
  • 使用navigator.userAgent 判断当前浏览器所处的环境
    https://blog.csdn.net/banana960531/article/details/86572475浏览器对于我们来说,可能是最熟悉的工具了。熟知的浏览器Firefox、Opera、Safari、IE、Chrome以外,据说世界上还有近百种浏览器。通常在开发的时候要做到兼容各种浏览器,因此提炼出判断浏览器类型及系统是很重要的。先......
  • springboot请求响应
    springboot请求响应1.什么是请求?响应?请求:获取请求数据响应:设置响应数据2.原始方法获取请求数据Controller方法形参中声明HttpServletRequest对象调用对象的getParameter(参数名)这种方式复杂繁琐//@RequestMapping("/simpleParam")//原始方式//创建请求对......
  • 实验一-密码引擎-3-加密API研究
    任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博......
  • 关系数据库同步框架 Dotmim.Sync
    推荐一款在线+离线数据同步框架Dotmim.Sync 移动智能应用可以分为在线模式、纯离线模式与“在线+离线”混合模式。在线模式下系统数据一般存储在服务器端的大中型数据库(如SQLServer、Oracle、MySQL等),移动应用依赖于稳定可靠的网络连接;纯离线模式下系统数据一般存储在移......
  • 前缀和
    [acwing]4405.统计子矩阵#include<cstdio>usingnamespacestd;typedeflonglongLL;constintN=510;intn,m,k;ints[N][N];LLres;intmain(){scanf("%d%d%d",&n,&m,&k);for(inti=1;i<=n;i++)......
  • RDB优缺点
         ......
  • C++ 引用
    (一)多重含义C++中的*和&有多重含义,在不同的使用条件下有不同的意思:1.*int*p=&a;/1.指针a=a*b;/2.乘法*p=100;/3.指向2.&intc=a&b;/1.位运算转换为二进制int*p=&a;/2.取地址inta=100;int&ar=a;/3.引用(二)引用的......