[学习笔记]基础字符串算法
这里使用“基础”仅代表整合一些篇幅小的算法与后续几篇大的字符串算法文章区别。
留给自己补科技树的时间越来越短了。
字符串哈希
容易实现,可以快速比对两个串是否相等。
一般可以使用自然溢出
注意使用非自然溢出时,应当把膜数取比字符串数量高一个数量级的质数。
最小循环表示法
考虑有
我们这里有一个简单做法,定义两个指针
两个指针不断向后匹配,直到两个字符不相等,假设前面相等的长度为
具体实现则是:
点击查看代码
scanf("%lld",&n);
for(int i = 1;i <= n;++i)
scanf("%lld",&a[i]);
for(int i = n + 1;i <= 2 * n;++i)
a[i] = a[i - n];
int j = 1,i = 2,k,tmp;
while(i <= n){
k = 0;
while(a[i + k] == a[j + k])
k += 1;
if(a[i + k] < a[j + k])
tmp = i,i = std::max(i + 1,j + k + 1),j = tmp;
else
i = i + k + 1;
}
for(int l = 1;l <= n;++l)
std::cout<<a[j + l - 1]<<" ";
}
KMP 算法
现在看KMP就觉得有新的理解。
我们现在发现求出的
AC自动机
考虑实际上是在
有三类题目:
首先是直接在自动机上匹配的问题。
第二类是在
第三类题目即使用
本文作者:fhq_treap
本文链接:https://www.cnblogs.com/dixiao/p/15918429.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】