博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
看毛片算法
阅读量:5077 次
发布时间:2019-06-12

本文共 520 字,大约阅读时间需要 1 分钟。

看毛片算法

给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。\(n,m<=10^6\)

众所周知,kmp算法是需要border数组的。\(border[i]\)表示前缀i的border的位置。

注意,字符串是从0开始编号的,算法中的所有数组也都是从零开始使用的。这样能使代码更易懂~

然后两张图就能够说明一切了:第一张表示求nxt,第二张表示匹配。

图片

#include 
#include
using namespace std;const int maxn=1e6+5;char s1[maxn], s2[maxn];int n1, n2, nxt[maxn];int main(){ scanf("%s", s1); scanf("%s", s2); n1=strlen(s1); n2=strlen(s2); int j=nxt[0]=-1; //j:i-1的border位置 for (int i=1; i

转载于:https://www.cnblogs.com/MyNameIsPc/p/9179675.html

你可能感兴趣的文章
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
PHP上传RAR压缩包并解压目录
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>