位操作-leetcode 401. Binary Watch

来源:互联网 发布:中邮网络培训学院 编辑:程序博客网 时间:2024/05/29 13:44

原题链接: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;    }};


原创粉丝点击