Binary Watch

来源:互联网 发布:网络运维需求调查表 编辑:程序博客网 时间:2024/05/16 16:34

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 = 1
Return: [“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”.

方法:采取逆向思维方式,遍历所有时间。

class Solution {private:    int count_1(int num){        int count = 0 ;        while(num){            ++count;            num&=(num-1);        }        return count;    }public:    vector<string> readBinaryWatch(int num) {        vector<string> res;        for(int hour = 0 ; hour < 12; ++hour){            int  num1 = count_1(hour);            for(int min = 0; min <60; ++min){                if(num1+count_1(min)==num){                    string temp = to_string(hour) +":"+ (min<10?'0'+to_string(min):to_string(min));                    res.push_back(temp);                }            }        }        return res;    }};
0 0