题意

给你一个字符串s1,字符串s2,s1循环移位,使s2包含在s1中,则s2 是s1的亲和串

分析

把s1自身复制一遍接在后面。

方法一: 用strstr函数。

方法二: KMP算法。

方法三: 用C++的string的find函数。

代码

方法一:

#include<cstdio>
#include<cstring>
char s1[],s2[];
int len;
int main()
{
while(~scanf("%s",&s1))
{
len=strlen(s1); for(int i=; i<len; i++)
s1[len+i]=s1[i]; scanf("%s",&s2); if(strstr(s1,s2)-s1>=) printf("yes\n");
else printf("no\n"); memset(s1,,sizeof(s1));
memset(s2,,sizeof(s2));
}
return ;
}

方法二:

#include<cstdio>
#include<cstring>
char S[],T[];
int next[],len; void getNext(){
int i,k=-;
next[]=k;
for(i=;T[i];i++){
while(k>= && T[i]!=T[k+]) k=next[k];
if (T[i]==T[k+]) k++;
next[i]=k;
}
} int KMP(){
int i=,j=;
while(i==-||S[j]&&T[i]){
if(i==-||S[j]==T[i]){
i++;
j++;
}else
i=next[i];
}
if(!T[i])
return j-i+;
return -;
} int main()
{
while(~scanf("%s",S))
{
len=strlen(S);
for(int i=len;i<*len;i++)
S[i]=S[i-len]; scanf("%s",T);
getNext();
if(KMP()<) printf("no\n");
else printf("yes\n");
memset(S,,sizeof(S));
memset(T,,sizeof(T));
}
return ;
}

方法三

#include<iostream>
using namespace std; int main()
{
string P,T;
while(cin>>P>>T)
{
P+=P;
if(P.find(T)!=string::npos)cout<<"yes"<<endl;
else cout<<"no"<<endl;
}
return ;
}

【HDU 2203】亲和串的更多相关文章

  1. HDU 2203 亲和串(KMP)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=2203 题目: 亲和串 Time Limit: 3000/1000 MS (Java/Others)   ...

  2. hdu 2203:亲和串(水题,串的练习)

    亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)

    Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了,但是发现 ...

  4. hdu 2203 亲和串

    把T串扩展成两倍   然后KMP  注意T的长度要大于P的长度 #include <iostream> #include <cstdio> #include <cstri ...

  5. hdu 2203亲和串 (kmp)

    #include<cstdio>#include<iostream>#include<cstring>#include<string>using nam ...

  6. HUD 2203 亲和串

    HUD 2203 亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 - ...

  7. HDOJ 2203 亲和串 【KMP】

    HDOJ 2203 亲和串 [KMP] Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  8. hdoj 2203 亲和串

    亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  9. HDU 2203 亲串(kmp)

    Problem Description 随着人们年龄的增长更大,更聪明还是越大越愚蠢,这是一个值,相同的问题Eddy也一直在思考,由于他在非常小的时候就知道亲和串怎样推断了,可是发现,如今长大了却不知 ...

  10. HDU 2203 kmp

    http://acm.hdu.edu.cn/showproblem.php?pid=2203 亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory ...

随机推荐

  1. POJ 3150 Cellular Automaton --矩阵快速幂及优化

    题意:给一个环,环上有n块,每块有个值,每一次操作是对每个点,他的值变为原来与他距离不超过d的位置的和,问k(10^7)次操作后每块的值. 解法:一看就要化为矩阵来做,矩阵很好建立,大白书P157页有 ...

  2. C语言异或运算在程序设计中的妙用

    异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0. 性质: (1).与1异或会翻转 (2).与0异或保持不变 ...

  3. MonoDevelop line endings

    文件编码问题 这个让我头疼很久的问题,每次修改文件后,都会出现这个提示框. 解决办法 之前修改 D:\Program Files (x86)\Unity\Editor\Data\Resources\S ...

  4. page-cache层以及各种标志位之间的转换

    对真实文件系统层,算是懂了,但是vfs层以及block层还是有点生疏呢,最近要好好分析一下了. page-cache层主要关注文件读写时的行为,包括页的状态之间的变化,何时变脏,何时变成writeba ...

  5. POJ 1125 Stockbroker Grapevine

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 33141   Accepted: ...

  6. MVC权限验证之ActionFilterAttribute

    参考:http://www.cnblogs.com/waitingfor/archive/2011/12/27/2303784.html ActionFilterAttribute是Action过滤类 ...

  7. CSS选择器的权重与优先规则

    权重顺序 “important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符”.   原文:http://w ...

  8. C语言 百炼成钢17

    //题目49:老师将糖果分成若干份,让学生按任意次序领取,第一个领取的,得到1份加上剩余糖果的1/10, //第二个领取的,得到2份加上剩余糖果的1/10,第三个领取的,得到3份加上剩余糖果的1/10 ...

  9. ARM基础知识

    ARM处理器模式: 模式可以理解为 工作环境. 异常模式:SVC管理模式. FIQ 快速中断模式 . IRQ中断模式.Abort中止.Undef 未定义模式: 正常模式:System系统模式. Use ...

  10. LeetCode:Clone Graph

    题目如下:实现克隆图的算法  题目链接 Clone an undirected graph. Each node in the graph contains a label and a list of ...