Problem 2154 YesOrNo
Accept: 14 Submit: 29
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
A国认为如果字符串a可以通过操作X变成字符串b,就认为是一样的字符串。
操作X:将字符串分为两部分,然后调换位置,操作次数不限。W=xy,W’=yx。
Input
有多组测试数据,处理到文件结尾。每组测试数据包含两个个字符串(包含英文字符和数字,长度为[1,500000])。
Output
对于每组测试数据,如果两个字符串是相同的,输出Yes或者是No。
Sample Input
YesOrNo
NoOrYes
YesOrNo
rNoYesO
Sample Output
No
Yes
1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<cstdlib> 5 using namespace std; 6 7 char a[500005]; 8 char b[500005]; 9 char c[500005]; 10 int main() 11 { 12 int i; 13 int alen,blen; 14 bool flag; 15 while(scanf("%s%s",a,b)!=EOF) 16 { 17 getchar(); 18 alen=strlen(a); 19 blen=strlen(b); 20 if(alen!=blen){printf("No\n");continue;} 21 22 flag=false; 23 for(i=0;i<alen;i++) 24 { 25 if(b[0]==a[i]) 26 { 27 strncpy(c,a+i,alen-i); 28 strncpy(c+alen-i,a,i); 29 c[alen]='\0'; 30 printf("%s",c); 31 if(strcmp(b,c)==0) 32 { 33 flag=true; 34 break; 35 } 36 } 37 } 38 if(flag==true) 39 printf("Yes\n"); 40 else printf("No\n"); 41 } 42 return 0; 43 }