/* 这题的关键是,既然可以一一映射,只要统计字符串中每个字母的出现次数并比较 也就是说,只要a串中的每一个次数,都能找到b串的一个次数和它相等即可 (但要注意不可重复,也就是说,a串中只有2个字母出现50次,b串也要恰好2个字母出现50次,不能多也不能少) ...至于到底是哪个字母出现50次,既然可以映射,哪个字母就不重要了,我们不需要关心这点... */
#include <iostream> #include <cstring> #include <algorithm> const int maxn = 110; const int check = 26; using namespace std; char a[maxn], b[maxn]; int na[check], nb[check]; int main() { while (cin >> a >> b) { int len = strlen(a); //na和nb每次用前都要先清零,这点十分重要!!! memset(na, 0, sizeof(na)); memset(nb, 0, sizeof(nb)); for (int i = 0; i < len; i++) { na[a[i] - 'A']++; nb[b[i] - 'A']++; } sort(na, na+check); sort(nb, nb+check); bool flag = true; for (int i = 0; i < check; i++) { if (na[i] != nb[i]) { flag = false; break; } } if (flag) cout << "YES" << endl; else cout << "NO" << endl; } return 0; }