#include<stdio.h>
#include<string.h>
char a[105];
char b[105];
int cmp(const void *n,const void *m )//递减排序
{
return *(int*)m-*(int*)n;
}
int main()
{
int i;
while(scanf("%s",a)!=EOF)
{
scanf("%s",b);
int n;
n=strlen(a);
int ans1[30],ans2[30];
memset(ans1,0,sizeof(ans1));//作为字母表,清零
memset(ans2,0,sizeof(ans2));
for(i=0;i<n;i++)
{
ans1[a[i]-'A']++;//记录字母个数
ans2[b[i]-'A']++;
}
qsort(ans1,28,sizeof(int),cmp);//排序
qsort(ans2,28,sizeof(int),cmp);
int ans;
ans=1;
for(i=0;i<28;i++)
{
if(ans1[i]!=ans2[i])
{
ans=0;//是不是相同的标志
break;
}
}
if(ans==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
#include<string.h>
char a[105];
char b[105];
int cmp(const void *n,const void *m )//递减排序
{
return *(int*)m-*(int*)n;
}
int main()
{
int i;
while(scanf("%s",a)!=EOF)
{
scanf("%s",b);
int n;
n=strlen(a);
int ans1[30],ans2[30];
memset(ans1,0,sizeof(ans1));//作为字母表,清零
memset(ans2,0,sizeof(ans2));
for(i=0;i<n;i++)
{
ans1[a[i]-'A']++;//记录字母个数
ans2[b[i]-'A']++;
}
qsort(ans1,28,sizeof(int),cmp);//排序
qsort(ans2,28,sizeof(int),cmp);
int ans;
ans=1;
for(i=0;i<28;i++)
{
if(ans1[i]!=ans2[i])
{
ans=0;//是不是相同的标志
break;
}
}
if(ans==1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
//一开始老是不对,例题都过不了,后来才发现这个题意略坑。。。。一定要注意对26个字母一一映射时没说怎么映射,不一定只是映射到前一个字母,就行样例中的AAA和AAA,输出是YES。