扩展kmp模板
来源:互联网 发布:office批量打印软件 编辑:程序博客网 时间:2024/06/05 09:42
int a[S], b[S];void getExtendNext(char *str){ int id = 0, mx = 0; a[0] = n, a[1] = 0; for (int i = 1; i < n; i++) { if (mx > i + a[i - id]) { a[i] = a[i - id]; continue; } a[i] = max(mx - i, 0); while (str[i + a[i]] == str[a[i]]) a[i]++; if (i + a[i] > mx) mx = i + a[i], id = i; }}void extendKmp(char *str, char *pat){ getExtendNext(pat); int id = 0, mx = 0; memset(b, 0, sizeof (b)); for (int i = 0; i < n; i++) { if (mx > i + a[i - id]) { b[i] = b[i - id]; continue; } b[i] = max(mx - i, 0); while ((i + b[i] < n) && pat[i + b[i]] == str[b[i]]) b[i]++; if (i + b[i] > mx) mx = i + b[i], id = i; }}
扩展kmp,a数组存的是pat串的所有后缀和pat串自身的最长公共前缀,b数组存的是pat串的所有后缀和str串的最长公共前缀。
思路和manacher有点像,利用前面已经匹配成功的包含了后面的来减少匹配次数。
- KMP,扩展KMP模板
- [模板]扩展KMP模板
- 【模板】kmp以及扩展kmp
- 扩展kmp模板
- 扩展KMP模板
- 扩展KMP模板
- 扩展kmp 模板
- 扩展KMP模板
- 扩展KMP模板
- 扩展KMP模板
- 【模板】扩展kmp
- 【字符串】【扩展kmp模板】
- 扩展kmp模板
- 模板_扩展kmp
- (扩展KMP)模板
- 扩展KMP模板
- hdu 2594 扩展KMP模板题
- ACM常用模板——扩展KMP
- python处理Zip文件
- 国内几大Android应用市场
- 图片等比例缩放
- Android回调函数机制
- 今天我感受到了云计算的好处-企业软件云计算服务
- 扩展kmp模板
- 对象与常对象的区别
- Android之Failed to install *.apk on device 'emulator-5554!
- 黑马程序员---java的内省机制
- 关联容器Map
- 分享JAVA基础知识精华总结
- hdu 1043 #八数码#全排列逆序对的哈希+BFS
- Linux下 expect命令【安装】
- UVA 657 掷骰子