思路:判断使是否映射后相同,因为要重新排序,所字符串用来的顺序就不重要了。只需要统计每个字母出现的次数,再将统计的好的次数,进行排序并比较两数组是否相同。若相同,即满足某种映射且变换后相同。
#include<bits/stdc++.h>
using namespace std;
int cmp(const void *a, const void *b){
return *(int *)a - *(int *)b;
}
int main() {
char a[101], b[101];
int ca[30], cb[30], i;
while(scanf("%s%s", a, b) != EOF){
memset(ca, 0, sizeof(ca));
memset(cb, 0, sizeof(cb));
for(i = 0;i < strlen(a);i ++)ca[a[i] - 'A']++;
for(i = 0;i < strlen(b);i ++)cb[b[i] - 'A']++;
qsort(ca, 26, sizeof(ca[0]), cmp);
qsort(cb, 26, sizeof(cb[0]), cmp);
for(i = 0;i < 26;i ++){
if(ca[i] != cb[i]){
printf("NO\n");
goto end;
}
}
printf("YES\n");
end:;
}
return 0;
}