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
給定一個二進制手錶,如上圖有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