特别申明,本文转载自: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矩阵计算相关推荐

  1. 【C#】KPM算法解决字符串匹配问题

    KPM算法解决字符串匹配问题 什么是KPM算法 步骤 Ⅰ根据<最大长度表>部分匹配表(next) 寻找最长前缀后缀 Ⅱ 根据 部分匹配表 进行匹配 代码实现 什么是KPM算法   Knut ...

  2. 字符串匹配:字符串中查找某子串

    字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...

  3. CCF - 201409-3 - 字符串匹配

    问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你 ...

  4. 字符串匹配shiftand算法

    令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...

  5. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  6. 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2021年度训练联盟热身训练赛第四场 H - Rock Paper Scissors(字符串匹配,FF ...

  7. Rabin-Karp ( 字符串匹配 )详解

    字符串匹配,例从 字符串S 中( 长度为 n ),找到 字符串T ( 长度为 m ) 经典思路:遍历 字符串 S,对于每个都为起点,匹配一次,则 O( n m )的复杂度 但是这样我们就对 字符 重复 ...

  8. 字符串匹配KMP算法

    字符串匹配KMP KMP过程其实就是去找下一个更好的状态的过程,省略去了中间穷举的无用过程,直接跳到下一个更好的状态,通过模式串本身的信息,站在模式串的角度来考虑问题 取长的一对 若想让模式串直接从S ...

  9. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

最新文章

  1. SLAM图优化g2o
  2. iptables规则的查看、添加、删除和修改
  3. 自定义控件:Viewpager
  4. setiosflags(ios::fixed)和setprecision()
  5. Android 事件分发,分发机制
  6. Linux运维工程师面试-部分题库
  7. c语言指针代码大全,C语言之指针(示例代码)
  8. sriov查看pf-vf对应关系
  9. 新出版书籍《Python预测之美:数据分析与算法实战》,送书活动!参与即可机会,获得一本实体书,中奖后可填写地址寄送。
  10. 用css实现图片翻转
  11. 什么是软件设计模式?
  12. Git报错remote: error: hook declined to update refs/heads/feature/XXX
  13. 微积分常用导数总结 - 清晰版 - 当然每一个都要熟记啦
  14. Win10文件夹Shift+右键菜单添加打开管理员Powershell窗口
  15. 腾讯地图实现微信小程序地图定位教程
  16. Asterisk是什么?
  17. C# Unicode 转换
  18. 主窗口(08):【类】QMdiSubWindow [官翻]
  19. jenkin swindows启动_Jenkins的安装、部署、启动(完整教程)
  20. 代码审计工具Checkmarx ActiveMQ 密码错误

热门文章

  1. linux运维工作手册
  2. 查看python的版本号有 四种方案
  3. Linux上安装MySQl超详细教程(CentOS系统)
  4. 运行slmgr.vbs -xpr, 找不到应用程序
  5. 用友T+“常用存货属性”
  6. C++获取电脑主板唯一标识
  7. Mysql数据库快速插入亿级数据
  8. 变速不变调播放mp3-QT-QAudioOutput-lame-sonic
  9. 科研 | 国家自然科学基金委 | 资助项目简介
  10. 一种高性能无锁队列设计