有a, b两个字符串判断是否能把其中一个字符串的各个字母重排,然后对26个字母做一个一一映射,使得两个字符串相同。也就是说每个字母都有唯一的映射。 因为读错题意一直WA
只要将a, b出现的所有字母映射到两个数组中,然后对数组排序,看两个数组是否相等就可以了。
还学到了另一个大佬的用vector判断数组是否相等的代码
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <vector> using namespace std; const int N = 110; char a[N], b[N]; vector<int> cnt1(26, 0), cnt2(26, 0); int main(void) { scanf("%s%s", a, b); int len = strlen(a); for(int i = 0; i < len; i++) { cnt1[a[i] - 'A']++; cnt2[b[i] - 'A']++; } sort(cnt1.begin(), cnt1.end()); sort(cnt2.begin(), cnt2.end()); if(cnt1 == cnt2) puts("YES"); else puts("NO"); return 0; }