字符串匹配——KMP算法
来源:互联网 发布:phpmyadmin删除数据库 编辑:程序博客网 时间:2024/04/29 23:53
直接放代码
#include <iostream>#include <cstring>#include <cmath>using namespace std;int main()//注意!我是一个C++的新手,用C风格字符串,我还让字符串下标看起来是从1开始,更好看一点 { int i {},j {}; char a[101] {},b[101] {}; int p[101] {};//其实我也不熟悉它的定义,反正p[i]可以简单理解为在b[i]取一个b[p[i]],使得b[i]=b[p[i]] cin>>a+1; cin>>b+1; int n=strlen(a+1),m=strlen(b+1);//n表示a的长度,m表示b的长度 j=0; p[1]=0;//p[1]前面没有东西,当然是0了! for(i=2;i<=m;i++) { while ((j>0)&&(b[j+1]!=b[i])) j=p[j];//找一个满足b[j+1]==b[i]的j if (b[j+1]==b[i]) j++;//变成了b[j]==b[i],使得这一位可以匹配 p[i]=j;//又变成了b[p[i]]==b[i],满足p的定义 } j=0; for(i=1;i<=n;i++) { while ((j>0)&&(b[j+1]!=a[i])) j=p[j];//找一个满足b[j+1]==a[i]的j if (b[j+1]==a[i]) j++;//变成b[j]=a[i],使得这一位可以匹配 if (j==m)//即是b匹配完了 { cout<<i-m+1<<endl;//输出b在a的起始位置 j=p[j];//找下一个,如果不再找直接break } } return 0;}
0 0
- 字符串匹配—KMP算法
- 字符串匹配算法——KMP算法
- 字符串匹配算法——KMP算法
- 字符串匹配算法——KMP算法
- KMP 算法 —— 字符串匹配算法
- 字符串匹配算法——KMP算法
- KMP 算法总结—字符串匹配算法
- 字符串模式匹配——KMP算法
- 字符串模式匹配——KMP算法
- KMP算法——字符串匹配问题
- 字符串匹配算法——KMP && BF
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- KMP算法——字符串匹配
- 字符串匹配——KMP算法
- 字符串匹配——KMP算法
- 排序算法 八种排序算法的分类
- 入职9个月总结-新的一年的规划
- 关系型数据库
- HDLC协议和PPP协议
- 问题 G: Two Bags of Bread(水题)
- 字符串匹配——KMP算法
- 找到工作啦
- listview的模拟点击事件
- 【Python】map/reduce函数相关练习
- vue2小笔记
- 关于nginx做负载均衡的配置以及各个配置的含义(简)
- hdu 4345 Permutation(数论+dp)
- LeetCode 199. Binary Tree Right Side View
- matlab如何使用、显示、修改和如何创建用户自己的颜色映象