class Solution {
public:
vector<string> readBinaryWatch(int num) {
vector<string> res;
for (int h = 0; h < 12; ++h) //12小时
for (int m = 0; m < 60; ++m) { //60分钟
//bitset会算出其中1的个数,查看binaryWatch会发现,2,4,6,8其实都是二的指数倍,对应二进制的位数,6位最多64-1个数的范围,刚好够60分钟,
//所以下面这句能将所有可能的时间都换成二进制表的表示形式,再看哪种符合亮灯个数等于num就插入到vector里
if (bitset<10>((h << 6) + m).count() == num)
{
res.push_back(to_string(h) + ( m >= 10 ? ":" : ":0" )+ to_string(m));
}
}
return res;
}
};
我也是编程小菜鸟,一点一点开始,不要放弃。