401. 二进制手表
题解:
要解决这个问题,你可以通过遍历所有可能的小时和分钟组合,检查每个组合中亮着的LED灯的总数是否等于turnedOn
。为了找到所有符合条件的时间,需要使用位运算来计算每个小时和分钟组合中亮着的LED灯的数量。
步骤如下:
- 遍历所有可能的小时(0到11)和分钟(0到59)。
- 对于每个小时和分钟组合,使用位运算(
bin()
函数和count('1')
方法)来计算亮着的LED灯的数量。 - 如果亮着的LED灯的数量等于
turnedOn
,将该时间添加到结果列表中。 - 格式化时间,确保分钟部分是两位数。
class Solution:def readBinaryWatch(self, turnedOn: int) -> List[str]:def count_ones(binary_str):return binary_str.count("1")res = []for hour in range(12):for minute in range(60):if count_ones(bin(hour)[2:].zfill(4)) + count_ones(bin(minute)[2:].zfill(6)) == turnedOn:res.append("{}:{:02d}".format(hour, minute))return res