<-E 2103> Rings and Rods
// Method 1
class Solution {
public:
int countPoints(string rings) {
unordered_map<int,set<char>> um;
for(int i = 0; i < rings.size() - 1; i+=2) {
um[rings[i + 1]].insert(rings[i]);
}
int ans=0;
for(auto i:um)
if(i.second.size() == 3)
ans++;
return ans;
}
};
// Method 2
class Solution {
public:
int countPoints(string rings) {
vector<vector<bool>> stat(10, vector<bool>(3, false));
for(int i = 0; i < rings.size(); i += 2)
if(rings[i] == 'R')
stat[rings[i + 1] - '0'][0] = true;
else if(rings[i] == 'G')
stat[rings[i + 1] - '0'][1] = true;
else
stat[rings[i + 1] - '0'][2] = true;
int count = 0;
for(vector<bool>& r : stat)
if(r[0] && r[1] && r[2])
count++;
return count;
}
};