本文主要是介绍C - YesOrNo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DescriptionA国认为如果字符串a可以通过操作X变成字符串b,就认为是一样的字符串。
操作X:将字符串分为两部分,然后调换位置,操作次数不限。W=xy,W’=yx。
Input
有多组测试数据,处理到文件结尾。每组测试数据包含两个个字符串(包含英文字符和数字,长度为[1,500000])。
Output
对于每组测试数据,如果两个字符串是相同的,输出Yes或者是No。
Sample Input
YesOrNo
NoOrYes
YesOrNo
rNoYesO
Sample Output
No
Yes
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std;
char a[500005];
char b[500005];
char c[500005];
int main()
{int i;int alen,blen;int flag;while(scanf("%s%s",a,b)!=EOF){getchar();alen=strlen(a);blen=strlen(b);if(alen!=blen){printf("No\n");continue;}flag=0;for(i=0; i<alen; i++){if(b[0]==a[i]){strncpy(c,a+i,alen-i);strncpy(c+alen-i,a,i);c[alen]='\0';if(strcmp(b,c)==0){flag=1;break;}}}if(flag==1)printf("Yes\n");elseprintf("No\n");}return 0;
}
法2:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
int main()
{string s1,s2;while(cin>>s1){cin>>s2;if(s1.size()!=s2.size()){cout<<"No"<<endl;continue;}else if(s1==s2){cout<<"Yes"<<endl;continue;}int len=s1.size();int flag=0;if(s1.size()==2){if(s1[0]=s2[1]&&s1[1]==s2[0]){printf("Yes\n");continue;}}string s3,s4,s5;for(int i=0;i<len;i++){if(s2[0]==s1[i]){s3.assign(s1,0,i);//cout<<s3<<endl;s4.assign(s1,i,len-i+1);//cout<<s4<<endl;s5=s4+s3;//cout<<s5<<endl;if(s5==s2){flag=1;break;}}}if(flag==1)printf("Yes\n");else if(flag==0)printf("No\n");}return 0;
}
这篇关于C - YesOrNo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!