codeforce 141A

/*字符串问题
没AC的人可能是没看清楚题目吧,
先大概说下题目大意:
给你3个字符串,如果第一个串和第二个串组合在一起可以等于第三个串就输出“YES”,
当然第一个串和第二个串组合在一起字符之间的顺序是打乱的,
可以和第三个串的顺序不一样但是每个字符的个数是一样的不能多也不能少
否则就输出“NO“。
个人解题思想:
首先用strcat函数,将串一和串二组合在一起,然后再分别对组合后产生的新的字符串和串三进行相同的递推的顺序排序,
最后用一个for循环去扫描新串和串三的每个字符,进行比较如果发现又不一样马上跳出循环输出”NO“,若全部相同输出”YES“
*/
# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
# include<cstdlib>
# include<string>
# include<cmath>
using namespace std;
char s1[1008],s2[1008],s3[1008],s[1008];
int i;
int main()
{
	scanf("%s%s%s",s1,s2,s3);
	int l1=strlen(s1);
	int l2=strlen(s2);
	int l3=strlen(s3);
	strcat(s1,s2);
	sort(s1,s1+l1+l2);//将得到的新串进行排序
	sort(s3,s3+l3);//将串三进行排序
	if(l1+l2==l3)
	{
		for(i=0;i<l1+l2;i++)
	   {
	 	if(s1[i]!=s3[i]) {cout<<"NO"<<endl;break;} 
	   }
	   if(i==l1+l2) cout<<"YES"<<endl;
	}
	else cout<<"NO"<<endl;
 return 0;
}
/*
体会:
开始对于这道题,没想到排序,只是想到记录每个字符出现的次数,在对比串三中每个字符出现的次数,若相同输出YES否则NO
貌似方法可行,但是正在比赛过程中就没想那么多,就直接换了另一种方法,就是这种就AC了,赛后用了记录次数方法,后来也AC了
*/

你可能感兴趣的:(CString,codeforce,141A)