/*
古老的密码
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char s1[110],s2[110];//堆里的数组会自动赋0
int a[26],b[26];
//书上说要用库函数qsort(),(快速排序,这里当然可以用选择排序啊,桶排序啊,等等)
int cmpi(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
//这个函数其实可以不用,因为char是被当成int 处理的
int cmpc(const void *a,const void *b)
{
return *(char *)a-*(char *)b;
}
int main()
{
while(scanf("%s",s1)!=EOF)
{
scanf("%s",s2);
int len=strlen(s1);
qsort(s1,len,sizeof(s1[0]),cmpc);
qsort(s2,len,sizeof(s2[0]),cmpc);
/* //测试s1,s2
printf("%s\n%s\n",s1,s2);
*/
//桶排序
for(int i=0;i<len;i++)
{
a[(int)s1[i]-'A']++;
b[(int)s2[i]-'A']++;
}
int k1=0,k2=0;
//计算a,b的字符种类
for(int i=0;i<26;i++)
{
if(a[i]!=0)
k1++;
if(b[i]!=0)
k2++;
}
/* //测试
printf("%d %d\n",k1,k2);
for(int i=0;i<26;i++)
printf("%d %d\n",a[i],b[i]);
*/
qsort(a,26,sizeof(a[0]),cmpi);
qsort(b,26,sizeof(b[0]),cmpi);
int flag=0;
for(int i=0;i<26;i++)
{
if(a[i]!=b[i])
{
flag=0;
break;
}
else flag=1;
}
/* //测试
printf("%d\n",len);
printf("\n%s\n%s\n",s1,s2);
for(int i=0;i<26;i++)
printf("%d %d\n",a[i],b[i]);
*/
int len2=strlen(s2);
if(len!=len2)
flag=0;//非法输入
if(k1!=k2)
flag=0;//字符种类不同
if(flag)
printf("YES\n");
else
printf("NO\n");
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}
好激动啊终于AC了,搞了一上午。菜。