Libre oj #103
来源:互联网 发布:法国华人 知乎 编辑:程序博客网 时间:2024/06/14 23:03
1953: #103. 子串查找
Time Limit: 5 Sec Memory Limit: 256 MB
Submit: 129 Solved: 56
[Submit][Status][Web Board]
Description
这是一道模板题。
给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。
A 中不同位置出现的 B 可重叠。
Input
输入共两行,分别是字符串 A 和字符串 B。
Output
输出一个整数,表示 B 在 A 中的出现次数。
Sample Input
zyzyzyzzyz
Sample Output
3
HINT
1≤A,B 的长度 ≤106 ,A 、B 仅包含大小写字母。
题目意思很清楚,让你找子串,也就是模式匹配算法。
KMP算法的关键在于如何求引入的next数组,也就是如何求部分匹配值,一般有递推和直接两种求法。
这里不具体讲BF和KMP算法了,当然这道题其实用c++中的strstr函数会更方便。
#include<bits/stdc++.h>using namespace std;const int maxn=1000001;char a[maxn];char b[maxn];int la,lb;int p[maxn];int ans=0;void next(){ int j=0; for(int i=1;i<lb;i++) { while(b[i]!=b[j]&&j>0) j=p[j-1]; if(b[i]==b[j]) j++; p[i]=j; }}void kmp(){ int j=0; for(int i=0;i<la;i++) { while(a[i]!=b[j]&&j>0) j=p[j-1]; if(a[i]==b[j]) j++; if(j==lb) ans++; } printf("%d",ans);}int main(){ scanf("%s%s",a,b); la=strlen(a); lb=strlen(b); next(); kmp(); return 0;}
阅读全文
0 0
- Libre oj #103
- libre office excel
- UBUNTU下安装 Libre Office
- 卸载libre office 安装wps
- ubuntu下的libre office使用
- LIBRE EVK with LS6 Firmware Upgrade Fail
- GNU/Linux-libre from source code (Loongson2F very good!!!)
- OJ
- OJ
- OJ
- OJ
- OJ
- OJ
- oj
- oj
- oj
- OJ
- OJ
- python中的多继承和多态
- hdu 2200
- 约会网站预测函数
- javascript实现HashTable
- jvm学习记录--05 垃圾收集器分类
- Libre oj #103
- 以知乎、得到APP为例!浅谈知识付费需不需要社交?
- WordPress 自定义文章类型(Post Type)
- 2017.11.9笔记
- 设计模式-外观模式
- CC2530 ZStack 增加2400波特率笔记
- Hibernate_01_介绍
- 如何将单片机应用程序‘重构’至微服务中
- 线性表的顺序静态存储--C语言实现