http://acm.hdu.edu.cn/showproblem.php?pid=2203

亲和串

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 15601    Accepted Submission(s): 6895

Problem Description

人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现,现在长大了却不知道怎么去判断亲和串了,于是他只好又再一次来请教聪明且乐于助人的你来解决这个问题。
亲和串的定义是这样的:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,那么我们就说s2 是s1的亲和串。

 
Input
本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于100000。
 
Output
如果s2是s1的亲和串,则输出"yes",反之,输出"no"。每组测试的输出占一行。
 
Sample Input
AABCD
CDAA
ASD
ASDF
 
Sample Output
yes
no
 
Author
Eddy
   将这个循环串乘以二在做一次kmp匹配就好了,能想到这一点就很简单了。

 #include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
int nex[],l1,l2,sl;
char s1[],s2[];
void solve()
{
int i,j,sz=l2;
nex[]=nex[]=;
for(i=;i<sz;++i)
{
j=nex[i];
while(j&&s2[i]!=s2[j]) j=nex[j];
nex[i+]=s2[i]==s2[j]?j+:;
}
j=;
for(i=;i<l1;++i)
{
while(j&&s1[i]!=s2[j])j=nex[j];
if(s1[i]==s2[j]){
j++;
if(j==l2) {puts("yes");return;}
}
}
puts("no");
}
int main()
{
int i,j;
while(scanf("%s%s",s1,s2)!=EOF){
l1=strlen(s1),l2=strlen(s2);
for(i=,j=l1;i<l1;i++,j++) s1[j]=s1[i];
l1*=;
solve();
}
return ;
}

最新文章

  1. 浩瀚科技 定制现场无线手持打印PDA手持终端扫描条码开单解决方案
  2. 错误解决:error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
  3. 【BZOJ 2594】【WC 2006】水管局长数据加强版
  4. mytbatis小问题
  5. [windows]利用IPSec对指定的ip进行访问限制
  6. phalcon框架学习之router
  7. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) &lt;转&gt;
  8. 学习Slim Framework for PHP v3 (七)--route middleware怎么被add进来的?
  9. java中集合类的简介
  10. H - Antenna Placement- hdu 3020(二分图匹配)
  11. fdisk -l 找不到分区怎么办?想办法找到隐藏分区。
  12. zen-Coding的使用
  13. 用PHP编写Hadoop的MapReduce程序
  14. Akka(29): Http:Server-Side-Api,Low-Level-Api
  15. 分享如何将git项目导入GitHub(附创建分支)
  16. Exp6 信息搜集与漏洞扫描 20164312 马孝涛
  17. 使用Dockerfile定制ubuntu+nginx镜像
  18. Java 并发集合的实现原理
  19. easyUI中datebox的格式显示
  20. Android 实践项目开发 总结

热门文章

  1. Vue.js中this.$nextTick()的使用
  2. Linux运维-zabbix_agent最新版的yum安装
  3. 中文Ubuntu里用户目录里的路径改成英文
  4. Python通过fork的方式防止僵尸进程
  5. sql server2005版本中,len函数计算了字符串末尾的空格
  6. C++实现计算器功能(包括计算含未知量的式子),输出后缀表达式
  7. RabbitMQ队列/Redis缓存
  8. FTP下载
  9. 获取电脑连接WiFi的信息
  10. Array排序方法sort()中的大坑