KMP模板
来源:互联网 发布:雷电软件儿 编辑:程序博客网 时间:2024/06/16 09:44
改编自白书
std::vector<int> getFail(const std::string& str) { std::vector<int> fail(str.length() + 1, 0); for (int i = 1; i < str.length(); i++) { int j = fail[i]; while (j > 0 && str[j] != str[i]) j = fail[j]; fail[i + 1] = str[i] == str[j] ? j + 1 : 0; } return fail;}/*求:pattern在sentence哪些位置出现过*/void find(const std::string& pattern, const std::string& sentence) { std::vector<int> fail = getFail(pattern); int j = 0; for (int i = 0; i < sentence.length(); i++) { while (j > 0 && pattern[j] != sentence[i]) j = fail[j]; if (pattern[j] == sentence[i]) j++; if (j == pattern.length()) { // find a answer std::cout << i - pattern.length() + 1 << std::endl; j = fail[j]; } }}
阅读全文
1 0
- KMP模板
- KMP 模板
- kmp模板
- kmp模板
- kmp模板
- KMP模板
- kmp模板
- kmp模板
- KMP 模板
- 【模板】KMP
- KMP模板
- KMP模板
- 【KMP 模板】
- KMP模板
- KMP 模板
- kmp模板
- KMP模板
- KMP 模板
- 阻塞信号与信号屏蔽pending
- 如何规划基于Docker的微服务?这10大要素一定要清楚
- Linux虚拟地址空间分布
- 并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
- git学习笔记
- KMP模板
- angularjs之checkbox全选
- CSDN-markdown编辑器
- Java 8 Streams filter 示例
- Java 反射与动态代理
- 一个zz的LOJ β Round划水记
- Java--学习笔记--线程
- 为什么开发人员要使用Linux
- 名字隐藏对虚函数也成立