0%

C++ 彰雲嘉區複賽 106-4 變位字判斷

題目連結:e524: 106 彰雲嘉區複賽 - Q4 變位字判斷

用map很方便(如果是C++11更方便)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<iostream>
#include<algorithm>
#include<set>
#include<map>
#include<string>
#include<cstdlib>
using namespace std;

int main(){
ios::sync_with_stdio(0);cin.tie(0);

string a,b;
int n;
cin>>n;
getline(cin,a);
while(n--){
getline(cin,a);
getline(cin,b);
map<char,int> ma,mb;

for(int i=0;i<a.size();i++){
char c=a[i];
if(islower(c)){
ma[c]++;
}else if(isupper(c)){
ma[tolower(c)]++;
}
}

for(int i=0;i<b.size();i++){
char c=b[i];
if(islower(c)){
mb[c]++;
}else if(isupper(c)){
mb[tolower(c)]++;
}
}

bool isv=true;
map<char,int>::iterator ta=ma.begin(),tb=mb.begin();
for(ta=ma.begin();ta!=ma.end() && tb!=mb.end();ta++){
pair<char,int> pa=(*ta),pb=(*tb);
if(pa!=pb){
isv=false;
}
tb++;
}
if(ma.size()!=mb.size()) isv=false;
cout<<isv<<"\n";
}
return 0;
}