Binary Watch
EasyBacktrackingBit Manipulation
Solution
export function readBinaryWatch(turnedOn: number): string[] {
const countBit = (num: number) => {
const matched = num.toString(2).match(/1/g);
return matched ? matched.length : 0;
};
const getTime = (hour: number, minute: number) => {
return `${hour}:${minute.toString().padStart(2, '0')}`;
};
const answer: string[] = [];
for (let hour = 0; hour < 12; hour++) {
const hourCount = countBit(hour);
for (let minute = 0; minute < 60; minute++) {
const minuteCount = countBit(minute);
if (hourCount + minuteCount === turnedOn) {
answer.push(getTime(hour, minute));
}
}
}
return answer;
}