出题人题解 | 5
2024-11-21 15:49:31
发布于:香港
50阅读
0回复
0点赞
利用两个map
维护即可。
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n;
string s1, s2;
cin >> n >> s1 >> s2;
map<char,int>mp1,mp2;
for(auto it : s1){
mp1[it] ++;
}
for(auto it : s2){
mp2[it] ++;
}
if(mp1 == mp2) cout << "YES\n";
else cout << "NO\n";
}
int main(){
int tt;
cin >> tt;
while(tt -- ){
solve();
}
return 0;
}
你也可以不用map
,开两个数组,映射到对应的ASCII
即可。
#include <bits/stdc++.h>
using namespace std;
int a[200], b[200];
void solve(){
int n;
string s1, s2;
cin >> n >> s1 >> s2;
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
for(auto it : s1){
a[it] ++;
}
for(auto it : s2){
b[it] ++;
}
bool f = 1;
for(int i = 33; i <= 126; i ++ ){
if(b[i] != a[i]){
f = 0;
break;
}
}
if(f) cout << "YES\n";
else cout << "NO\n";
}
int main(){
int tt;
cin >> tt;
while(tt -- ){
solve();
}
return 0;
}
这里空空如也
有帮助,赞一个