题意:
两字符串,求它们之间的26字母能否一一对应。
思路:
题目即求是否会有一个映射关系,若A->C,则所有A->C,这样实际上只要两个串相同字符数目是否能够一一对应即可。
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 105;
char stra[N], strb[N];
int cnta[30], cntb[30];
int main() {
while (~scanf("%s%s",stra,strb)) {
memset(cnta, 0, sizeof(cnta));
memset(cntb, 0, sizeof(cntb));
int a = strlen(stra);
for (int i = 0; i < a; i++) {
cnta[stra[i] - 'A']++;
cntb[strb[i] - 'A']++;
}
sort(cnta, cnta + 26);
sort(cntb, cntb + 26);
int i;
for (i = 0; i < 26; i++)
if (cnta[i] != cntb[i])
break;
if (i>=26)
printf("YES\n");
else
printf("NO\n");
}
}