博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[hihoCoder] KMP算法
阅读量:6112 次
发布时间:2019-06-21

本文共 1230 字,大约阅读时间需要 4 分钟。

Each time we find a match, increase the global counter by 1.

For KMP, algorithm, you may refer to the following links which have nice explanations.

  1. ;
  2. , with a well-commented C code.
1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 vector
kmpProcess(string t) { 8 int n = t.length(); 9 vector
lps(n, 0);10 for (int i = 1, len = 0; i < n; ) {11 if (t[i] == t[len])12 lps[i++] = ++len;13 else if (len) len = lps[len - 1];14 else lps[i++] = 0;15 }16 return lps;17 }18 19 int kmp(string s, string t) {20 int m = s.length(), n = t.length(), cnts = 0;21 vector
lps = kmpProcess(t);22 for (int i = 0, j = 0; i < m; ) {23 if (s[i] == t[j]) {24 i++;25 j++;26 }27 if (j == n) cnts++;28 if (i < m && s[i] != t[j]) {29 if (j) j = lps[j - 1];30 else i++;31 }32 }33 return cnts;34 }35 36 int main(void) {37 int cases;38 scanf("%d", &cases);39 for (int i = 0; i < cases; i++) {40 string s, t;41 cin >> t;42 cin >> s;43 printf("%d\n", kmp(s, t));44 }45 return 0;46 }

 

转载于:https://www.cnblogs.com/jcliBlogger/p/4611228.html

你可能感兴趣的文章
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
关于软件开发的一些感悟
查看>>
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>