替换方法:不管怎样的替换规则,一个字母替换成另一个字母,出现的次数并不会改变;
排列方法:只改变字母出现的顺序,次数也不会改变
所以只需要比较两个字符串中字母的频率排序是不是一样就可以了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare(const void * elem1 , const void * elem2)
{
return (strcmp((char *)elem1, (char *)elem2));
}
int main(int argc, char *argv[])
{
char s[101],d[101];
int sp[27],dp[27];
int i;
for( i = 0 ; i < 26 ; i++ )
sp[i] = dp[i] = 0 ;
scanf("%s",d);
scanf("%s",s);
for( i = 0 ; d[i]!='\0' ; i++ )
dp[d[i]-'A']++;
for( i = 0 ; s[i]!='\0' ; i++ )
sp[s[i]-'A']++;
qsort(dp , 26 , sizeof(int) , compare);
qsort(sp , 26 , sizeof(int) , compare);
for( i = 0 ; i < 26 ; i++ )
{
if( dp[i]!=sp[i] )break;
}
if(i==26)printf("YES\n");
else printf("NO\n");
//system("PAUSE");
return 0;
}