kmp模版
时间:2022-05-07
本文章向大家介绍kmp模版,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 int kmpnext[N];
2 char s[N],t[N];///s为主串,t为模式串
3 int slen,tlen;///slen为主串的长度,tlen为模式串的长度
4 inline void getnext()
5 {
6 int i,j;
7 j=kmpnext[0]=-1;
8 i=0;
9 while(i<tlen)
10 {
11 if(j==-1||t[i]==t[j])
12 {
13 kmpnext[++i]=++j;
14 }
15 else
16 {
17 j=kmpnext[j];
18 }
19 }
20 }
21 /*
22 返回模式串T在主串S中首次出现的位置
23 返回的位置是从0开始的。
24 */
25 inline int kmp_index()
26 {
27 int i=0,j=0;
28 getnext();
29 while(i<slen&&j<tlen)
30 {
31 if(j==-1||s[i]==t[j])
32 {
33 i++;
34 j++;
35 }
36 else
37 j=kmpnext[j];
38 }
39 if(j==tlen)
40 return i-tlen;
41 else
42 return -1;
43 }
44 /*
45 返回模式串在主串S中出现的次数
46 */
47 inline int kmp_count()
48 {
49 int ans=0;
50 int i,j=0;
51 if(slen==1&&tlen==1)
52 {
53 if(s[0]==t[0])
54 return 1;
55 else
56 return 0;
57 }
58 getnext();
59 for(i=0;i<slen;i++)
60 {
61 while(j>0&&s[i]!=t[j])
62 j=kmpnext[j];
63 if(s[i]==t[j])
64 j++;
65 if(j==tlen)
66 {
67 ans++;
68 j=kmpnext[j];
69 }
70 }
71 return ans;
72 }
- 关于某道C#上机题的OO
- Android 事件处理探险
- Fluent NHibernate RC 1.0 --升级内容
- 驳“反驳老赵之“伪”递归”
- 关于今天很热的--FizzBuzzWhizz
- 了解EF CodeFirst的Migrator功能与Migrator.Net对比
- struts技术的logic标签
- 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
- 你不知道的Javascript:有趣的setTimeout
- ADO.NET 2.0 中的新增 DataSet 功能
- WinRar 4.20 – 文件扩展名欺骗(0Day)
- 黑掉ATM取款机?只需一条短信
- DNS迭代穷举脚本
- 走进计算机取证分析的神秘世界
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法