-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtesanagram.cpp
More file actions
74 lines (63 loc) · 1.69 KB
/
Copy pathtesanagram.cpp
File metadata and controls
74 lines (63 loc) · 1.69 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include<bits/stdc++.h>
using namespace std;
bool isAnagramNestedLoop(string a, string b){
int nSame = 0;
int nA = a.size();
int nB = b.size();
if(nA != nB){
return false;
}else if(a == b){
return true;
}else{
for(int i = 0 ; i < nA ; i++){ // n
for(int j = 0 ; j < nB ; j++){ // n
if(a[i] == b[j]){ // ---------------
nSame++; // n x n = n^2
a[i] = '_';
b[j] = '*';
}
}
}
}
return (nSame == nA);
}
bool isAnagramMap(string a, string b){
map<char, int> aM;
map<char, int> bM;
int nA = a.size();
int nB = b.size();
if(nA != nB){
return false;
}else if(a == b){
return true;
}else{
for(int i = 0 ; i < nA ; i++){ // n
aM[a[i]]++;
bM[b[i]]++;
}
for(int j = 0 ; j < nA ; j++){ // n
if(aM[a[j]] != bM[a[j]]){
return false;
}
} // ------------
} // n + n = 2n
return true;
}
bool isAnagramSort(string a, string b){
int nA = a.size();
int nB = b.size();
if(nA != nB){
return false;
}else if(a == b){
return true;
}else{
sort(a.begin(), a.end()); // n log n
sort(b.begin(), b.end()); // n log n
} // ---------
// 2n log n
return(a == b);
}
int main(){
cout << isAnagramSort("aan", "ana");
return 0;
}