题解:
要解决这个问题,你可以通过遍历所有可能的小时和分钟组合,检查每个组合中亮着的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