#include <iostream>
#include <vector>

using namespace std;

class Solution {
public:
    static constexpr int POLE_NUM = 10;
    static constexpr int COLOR_NUM = 3;

    int getColorId(char color) {
        if (color == 'R') {
            return 0;
        }
        else if (color == 'G') {
            return 1;
        }
        else if (color == 'B') {
            return 2;
        }
        return -1; // 未知颜色
    }

    int countPoints(string rings) {
        vector<vector<int>> state(POLE_NUM, vector<int>(COLOR_NUM, 0));
        //vector<int>(COLOR_NUM, 0)这部分代码创建了一个COLOR_NUM 一维向量,并将每个元素初始化魏0,
        //vector<vector<int>> state(POLE_NUM, vector<int>(COLOR_NUM, 0)):这部分代码创建了一个长度为 POLE_NUM 的二维向量,其中每个元素都是一个长度为 COLOR_NUM 的一维向量。整个二维向量表示了所有杆子的颜色情况。POLE_NUM 表示杆子的数量。
        int n = rings.size();
        for (int i = 0; i < n; i += 2) {
            char color = rings[i];
            int pole_index = rings[i + 1] - '0';
            state[pole_index][getColorId(color)] = 1;
        }
        int res = 0;
        for (int i = 0; i < POLE_NUM; i++) {
            bool flag = true;
            for (int j = 0; j < COLOR_NUM; j++) {
                if (state[i][j] == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                res++;
            }
        }
        return res;
    }
};

int main() {
    Solution sol;
    string rings = "B0B6G0R6R0R6G9";
    //string rings = "G4";
    int result = sol.countPoints(rings);
    cout << "Output: " << result << endl;
    return 0;
}

  vector<vector<int>> state(POLE_NUM, vector<int>(COLOR_NUM, 0));
        //vector<int>(COLOR_NUM, 0)这部分代码创建了一个COLOR_NUM 一维向量,并将每个元素初始化魏0,
        //vector<vector<int>> state(POLE_NUM, vector<int>(COLOR_NUM, 0)):这部分代码创建了一个长度为 POLE_NUM 的二维向量,其中每个元素都是一个长度为 COLOR_NUM 的一维向量。整个二维向量表示了所有杆子的颜色情况。POLE_NUM 表示杆子的数量。

11-02 23:05