[LeetCode] Binary Watch

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).git

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.spa

Example:code

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:blog

  • 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".

給定一個二進制手錶,如上圖有10個LED組成。給定一個數字表明點亮的LED個數。把亮着的LED所表明的時間返回一個字符串數組。Note中要求了時間輸出的格式。字符串

h << 6 表示h的二進制表示左移6位。string

h << 6 | m表示左移後的二進制與m取或,即h末尾的二進制由m的二進制位代替。it

bitset<10>(h << 6 | m)表示一個10位二進制數,h的二進制前面幾位取0構成一個10位二進制數。10個LED。io

count()函數返回bitset<10>(h << 6 | m)中爲1的個數。

class Solution {
public:
    vector<string> readBinaryWatch(int num) {
        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)
                    res.emplace_back(to_string(h) + (m < 10 ? ":0" : ":") + to_string(m));
        return res;
    }
};
// 3 ms
相關文章
相關標籤/搜索