美文网首页
Binary Watch

Binary Watch

作者: 极速魔法 | 来源:发表于2017-07-17 10:54 被阅读16次

    //401
    A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom represent the minutes (0-59).
    Each LED represents a zero or one, with the least significant bit on the right.

    For example, the above binary watch reads "3:25".
    Given a non-negative integer n which represents the number of LEDs that are currently on, return all possible times the watch could represent.
    Example:
    Input: n = 1Return: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]

    Note:
    The order of output does not matter.
    The hour must not contain a leading zero, for example "01:00" is not valid, it should be "1:00".
    The minute must be consist of two digits and may contain a leading zero, for example "10:2" is not valid, it should be "10:02".

    #include <iostream>
    #include <vector>
    #include <bitset>
    #include <string>
    
    using namespace std;
    
    class Solution {
    public:
        vector<string> readBinaryWatch(int num) {
            //permutation
            vector<string> res;
            for(int h=0;h<12;h++){
                for(int m=0;m<60;m++){
                    if(bitset<10>(h<<6 | m).count()==num){
                        //left move,right->left become empty
                        //becom 10 bit h--4 bit ,m--6 bit
                        res.push_back(to_string(h)+(m<10 ? ":0":":")+to_string(m));
                    }
                }
            }
            return res;
        }
    };
    
    int main(){
        int num=1;
        vector<string> res;
        res=Solution().readBinaryWatch(num);
        for(int i=0;i<res.size();i++){
            for(int j=0;j<res[i].size();j++){
                cout<<res[i][j]<<" ";
            }
            cout<<endl;
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题: Binary Watch

          本文链接:https://www.haomeiwen.com/subject/orsfkxtx.html