这题思路比较简单,我开始的思路是map<int,set>,value是一个去重的set,后面就想着怎么优化。状态压缩,最后直接用一个int数组就好
cppclass Solution {
public:
int countPoints(string rings) {
int sticks[10] = {0}; // 数组大小为10,索引从0到9
for (int i = 0; i < rings.length(); i += 2) {
char color = rings[i];
int stick = rings[i + 1] - '0';
if (color == 'R') {
sticks[stick] |= (1 << 0); // 设置最低位为1,表示红色
} else if (color == 'G') {
sticks[stick] |= (1 << 1); // 设置次低位为1,表示绿色
} else if (color == 'B') {
sticks[stick] |= (1 << 2); // 设置再次低位为1,表示蓝色
}
}
int count = 0;
for (int i = 0; i < 10; i++) {
if (sticks[i] == 7) { // 7的二进制表示为111,表示三个颜色都存在
count++;
}
}
return count;
}
};
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!