forked from kamyu104/LeetCode-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinary-watch.cpp
More file actions
28 lines (26 loc) · 708 Bytes
/
binary-watch.cpp
File metadata and controls
28 lines (26 loc) · 708 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Time: O(1)
// Space: O(1)
class Solution {
public:
vector<string> readBinaryWatch(int num) {
vector<string> result;
for (int h = 0; h < 12; ++h) {
for (int m = 0; m < 60; ++m) {
if (bit_count(h) + bit_count(m) == num) {
const auto hour = to_string(h);
const auto minute = m < 10 ? "0" + to_string(m) : to_string(m);
result.emplace_back(hour + ":" + minute);
}
}
}
return result;
}
private:
int bit_count(int bits) {
int count = 0;
for (; bits; bits &= bits - 1) {
++count;
}
return count;
}
};