xmu1451kmp
来源:互联网 发布:ios10屏幕录制软件 编辑:程序博客网 时间:2024/04/29 05:21
http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1451
给出两个长度相同的串 问能否经过移动是两串相等 abcd->bcda
输出移动的长度
可以将第一个串重复一下变成两倍当做文本串,用另一个去匹配
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int maxn=200010;char s[maxn<<1],t[maxn];int nex[maxn],flag,f;void get_next(int len){ int i=0,j=-1; nex[0]=-1; while(i<len) { if(j==-1||t[i]==t[j]) { i++,j++; nex[i]=j; } else j=nex[j]; }}void kmp(int len1,int len2){ int i=0,j=0; get_next(len1); while(i<len1) { if(j==0||s[i]==t[j]) { i++;j++; } else j=nex[j]; if(j==len2) { f=i; flag=1; break; } }}int main(){ while(~scanf("%s%s",s,t)) { int len1=strlen(s); int len2=strlen(t); for(int i=0;i<len1;i++) s[i+len1]=s[i]; flag=0; kmp(len1<<1,len2); cout<<flag<<endl; if(flag) printf("%d\n",(2*len1-f)%len1);//这里原来写f-len1,wa而且也没取余 没想清楚 else puts("-1"); } return 0;}
0 0
- xmu1451kmp
- TCP的三次握手建立连接与四次挥手释放连接
- 【c++】合唱队问题
- 使用IntelliJ IDEA开发SpringMVC网站
- 编译原理—判断回文
- PHP Clone 深复制和浅复制
- xmu1451kmp
- NSString字符串截取
- 几种图像边缘检测算子的比较
- Java核心知识点-String、StringBuilder和StringBuffer的特点
- itk 读取图像,两种格式之间转换
- The Trip programming_Challengs Uva_OnlineJudge
- 小游戏——给五名运动员排名、找凶手、模拟银行密码三次输入场景、猜数字游戏,猜大或者猜小直到猜正确
- leetcode 16 3Sum Closest
- VS2013MFC对话框工程学习笔记十二 -