原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
C++代码
常规
class Solution {
public:int countPoints(string rings) {int count = 0;set<string>se[10];for(int i=1,j=0;i<rings.length();i+=2,j+=2){se[rings[i]-'0'].insert(to_string(rings[j]));}for(int i=0;i<10;i++){if(se[i].size()==3) count++; }return count;}
};
Python代码
位运算
class Solution:def countPoints(self, rings: str) -> int:n,count = len(rings),0binary_map = [0]*17 # R - B = 17for i in range(0,n,2):binary_map[ord(rings[i]) - ord('B')] |= 1 << (int(rings[i+1]) - int('0')) for i in range(10):tmp = 0for ch in ['R','G','B']:tmp += (binary_map[ord(ch)-ord('B')] >> i) & 1 #第i根杆 上是否有ch颜色的圈if tmp == 3:count += 1return count