less than 1 minute read

<-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;
    }
};