401. 二进制手表

题解:

要解决这个问题,你可以通过遍历所有可能的小时和分钟组合,检查每个组合中亮着的LED灯的总数是否等于turnedOn。为了找到所有符合条件的时间,需要使用位运算来计算每个小时和分钟组合中亮着的LED灯的数量。

步骤如下:

  1. 遍历所有可能的小时(0到11)和分钟(0到59)。
  2. 对于每个小时和分钟组合,使用位运算(bin()函数和count('1')方法)来计算亮着的LED灯的数量。
  3. 如果亮着的LED灯的数量等于turnedOn,将该时间添加到结果列表中。
  4. 格式化时间,确保分钟部分是两位数。
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