KMP(匹配)
Description
Input
Output
Sample Input
abcde a3
aaaaaa aa
#
Sample Output
0
3 题目大意:输出给定字符串中第二个字符串出现的次数。
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; char a[],b[];
int fail[];
int la,lb;
void KMP(); int main()
{
while(scanf("%s",a+),a[]!='#')//输入从1号位置开始
{
la=strlen(a+);
scanf("%s",b+);
lb=strlen(b+);
//cout<<la<<lb<<endl;
KMP();
}
return ;
}
void KMP()
{
memset(fail,,sizeof(fail));
fail[]=-;
for(int i=;i<=lb;i++)
{
int p=fail[i-];
while(p>=&&b[p+]!=b[i])
p=fail[p];
fail[i]=p+;
}
int ans=;
for(int i=,p=;i<=la;i++)
{
while(p>=&&b[p+]!=a[i])
p=fail[p];
if(++p==lb)
{
ans++;
//为了防止出现重复匹配
p=fail[p]+p;
}
}
printf("%d\n",ans);
}
KMP(匹配)的更多相关文章
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配. a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25. 解法:[思考]1.X 暴力. ...
- BNUOJ-26580 Software Bugs KMP匹配,维护
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26580 题意:给一个模式串,然后m个匹配串,要求删掉匹配串中的所有存在的模式串,使得余下的 ...
- kmp匹配详解
字符串算法都是毒瘤的 一.kmp算法的用处 在文本串中查找模式串的位置,数量 文本串:要在这个字符串查找模式串 模式串:在文本串中查找的字符串 全是废话 二.kmp算法的思想 话说kmp好像是3个发明 ...
- TYVJ P1068 STR Label:KMP匹配 不懂
描述 给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度.给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个.N,M,K<=200000 输入格式 第一行三个数 ...
- 流动python - 字符串KMP匹配
首先我们看一下简单的字符串匹配. 你可以把文本字符串s固定,模式字符串p从s对齐的左边缘,作为承担部分完全一致,匹配成功,失败将是模式字符串p整体向右1地点,继续检查对齐部分,重复. #朴素匹配 de ...
- AC自动机——多个kmp匹配
(并不能自动AC) 介绍: Aho-Corasick automaton,最经典的处理多个模式串的匹配问题. 是kmp和字典树的结合. 精髓与灵魂: ①利用trie处理多个模式串 ②引入fail指针. ...
- POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20966 Accepted: 9279 Descr ...
- 【字符串】跳来跳去的KMP匹配
原理: 不给予证明啦(懒得一批 但是代码中有给还算详细的注释 参考:https://www.cnblogs.com/yjiyjige/p/3263858.html 模板题: 洛谷P3375: http ...
- KMP匹配 (1)
---恢复内容开始--- 字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串" ...
随机推荐
- LocalDB 的创建与迁移
首先创建对应的对象 public class Movie { public int ID { get; set; } public string Title { get; set; } public ...
- Postfix上的反垃圾邮件的四个方法
在介绍如何配置Postfix的smtp配置之前有必要首先介绍一下它的背景和特点.Postfix是一个由IBM资助下由WietseVenema 负责开发的自由软件工程的一个产物,其目的是为用户提供除se ...
- tableview 上拉时 标题行出现在顶部不动效果
类似这种效果: 其实很简单,利用tableview 的plain属性,然后使用section,其实滑上去不动的是 section的headView. -(NSInteger)numberOfSect ...
- C#-创建自定义双击事件
.NET Compact Framework 不支持按钮的 Windows 窗体 DoubleClick 事件.但是您可以创建一个从 Button 类派生的控件来实现该事件. 创建自定义双击事件 创建 ...
- U-BOOT 移植到友善之臂mini2440
U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...
- 安卓模拟器Android SDK Manager 无法获取SDK列表的解决办法
1.打开运行Android SDK Manager ,Tool菜单,选择Options,打开设置菜单,勾选“Force https://...sources to be fetched using h ...
- DOS 命令 attrib:修改文件属性
有时候系统中病毒之后会把自己的所有文件的属性改为隐藏只读格式,如果手动修改的话太麻烦并且浪费时间,不如用 Attrib 命令试试. 步骤: 1:开始->运行,在里面输入 cmd,打开命令行界面: ...
- NPOI导出多表头Execl(通过html表格遍历表头)
关于NPOI的相关信息,我想博客园已经有很多了,而且NPOI导出Execl的文章和例子也很多,但导出多表头缺蛮少的:今天要讲的通过自己画html表格:通过html表格来导出自定义的多表头: 先来看要实 ...
- Java ZIP File Example---refernce
In this tutorial we are going to see how to ZIP a file in Java. ZIP is an archive file format that e ...
- python--字典工厂函数dict()
dic = {"name" : "wangmo" ,"age" : 18} #dic.clear() #清空字典 print(dic) #{ ...