KPM字符串匹配next矩阵计算
特别申明,本文转载自:http://www.cnblogs.com/c-cloud/p/3224788.html
网上看了很多KMP字符串匹配的博客,这篇是讲的最通俗易通的。下面贴出博客的内容,膜拜。
内容贴出来看不了,直接点链接吧,保证能看明白。下面贴出hihocoder #1015 KMP匹配的AC代码
题目链接:http://hihocoder.com/problemset/problem/1015?sid=1174439
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
void calNext(string str,int Next[])
{int i,k;Next[0]=0;//cout<<Next[0];for(k=0,i=1;i<str.length();i++){while(k>0&&str[k]!=str[i])k=Next[k-1];if(str[k]==str[i]){k++;}Next[i]=k;// cout<<Next[i];}//cout<<endl;
}
int main()
{int num,i,k,flag;string p_str,o_str;freopen("input.txt","r",stdin);cin>>num;while(num--){flag=0;cin>>p_str;cin>>o_str;int *p=new int[p_str.length()];calNext(p_str,p);for(i=0,k=0;i<o_str.length();i++){while(k>0&&o_str[i]!=p_str[k]){k=p[k-1];}if(o_str[i]==p_str[k]){k++;}if(k==p_str.length()){flag++;}}cout<<flag<<endl;delete [] p;}return 0;
}
代码大致与转载博客里提供的代码相同,针对题目要求,做了些微修改。KMP还是略显复杂,理解起来有困难。
KPM字符串匹配next矩阵计算相关推荐
- 【C#】KPM算法解决字符串匹配问题
KPM算法解决字符串匹配问题 什么是KPM算法 步骤 Ⅰ根据<最大长度表>部分匹配表(next) 寻找最长前缀后缀 Ⅱ 根据 部分匹配表 进行匹配 代码实现 什么是KPM算法 Knut ...
- 字符串匹配:字符串中查找某子串
字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...
- CCF - 201409-3 - 字符串匹配
问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...
- 字符串匹配shiftand算法
令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...
- 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全
文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...
- 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...
- Rabin-Karp ( 字符串匹配 )详解
字符串匹配,例从 字符串S 中( 长度为 n ),找到 字符串T ( 长度为 m ) 经典思路:遍历 字符串 S,对于每个都为起点,匹配一次,则 O( n m )的复杂度 但是这样我们就对 字符 重复 ...
- 字符串匹配KMP算法
字符串匹配KMP KMP过程其实就是去找下一个更好的状态的过程,省略去了中间穷举的无用过程,直接跳到下一个更好的状态,通过模式串本身的信息,站在模式串的角度来考虑问题 取长的一对 若想让模式串直接从S ...
- c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
最新文章
- SLAM图优化g2o
- iptables规则的查看、添加、删除和修改
- 自定义控件:Viewpager
- setiosflags(ios::fixed)和setprecision()
- Android 事件分发,分发机制
- Linux运维工程师面试-部分题库
- c语言指针代码大全,C语言之指针(示例代码)
- sriov查看pf-vf对应关系
- 新出版书籍《Python预测之美:数据分析与算法实战》,送书活动!参与即可机会,获得一本实体书,中奖后可填写地址寄送。
- 用css实现图片翻转
- 什么是软件设计模式?
- Git报错remote: error: hook declined to update refs/heads/feature/XXX
- 微积分常用导数总结 - 清晰版 - 当然每一个都要熟记啦
- Win10文件夹Shift+右键菜单添加打开管理员Powershell窗口
- 腾讯地图实现微信小程序地图定位教程
- Asterisk是什么?
- C# Unicode 转换
- 主窗口(08):【类】QMdiSubWindow [官翻]
- jenkin swindows启动_Jenkins的安装、部署、启动(完整教程)
- 代码审计工具Checkmarx ActiveMQ 密码错误