原题链接:Binary Watch
题解:
class Solution {
public:
//计算1的位数
int countBits(int n){
if(n==0)return 0;
int count=1;
while(n=n&(n-1))count++;
return count;
}
vector<string> readBinaryWatch(int num) {
/*
Time Complexity:O(1)
Space Complexity:O(1)
*/
vector<string>svec;
if(num<0 || num>8 )return svec;
if(num==0)return vector<string>{"0:00"};
vector<int>hours;
for(int i=0;i<=3&&i<=num;i++){
hours.clear();
for(int temp=0;temp<=11;temp++){
if(countBits(temp)==i){
hours.push_back(temp);
}
}
for(int temp=0;temp<=59;temp++){
if(countBits(temp)==num-i){
for(int k=0;k<hours.size();k++){
svec.push_back(to_string(hours[k])+":"+((temp<10)?("0"+to_string(temp)):to_string(temp)));
}
}
}
}
return svec;
}
};