POJ
来源:互联网 发布:java破解验证码 编辑:程序博客网 时间:2024/06/03 22:05
点我看题
题意:找出字符串S前后缀相同的串的长度,升序输出。
分析:简单KMP,emmm很激动自己想出来了,虽然简单,不多说考虑前后缀相同的字符串对应字符是相同的。
//但是用set存答案T了,直接用数组就A了。
参考代码:
#include<cstdio>#include<cmath>#include<cstring>#include<set>#include<algorithm>#include<iostream>using namespace std;const int maxn = 1e6+10;int n;char S[maxn];int nxt[maxn];int ans[maxn];void GetNext(){ int i = 0, j = -1; nxt[0] = -1; while( i < n) { if( j == -1 || S[i] == S[j]) nxt[++i] = ++j; else j = nxt[j]; }}int main(){ while( ~scanf("%s",S)) { n = strlen(S); GetNext(); // for( int i = 0; i <= n; i++) // printf("%d ",nxt[i]); // puts(""); int p = nxt[n]; int len = 0; while( p) { ans[len++] = p; p = nxt[p]; } for( int i = len-1; i >= 0; i--) printf("%d ",ans[i]); printf("%d\n",n); // for( set<int> :: iterator it = ans.begin(); it != ans.end(); it++) // printf("%d ",*it); // printf("%d\n",n); } return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- service mesh 数据平面nginmesh
- Activity笔记
- Bailian2681 求字符串长度【字符串】
- 2017年学习总结___生成器
- java 静态代码块加载配置文件信息
- POJ
- 摩羯面试题总结
- fastdfsutils
- 潭州教育教你 如何用C++实现自己的Tensorflow
- 一个表单中有编辑和删除两个按钮分别调用后台action的不同方法
- JSP 9大内置对象初步探究
- 【SpringMVC】SpringMVC的工作流程
- Android中的广播接收者BroadcastReceiver
- Spring Boot集成无状态Shiro