LeetCode:401(Python)—— 二进制手表(简单)

时间:2025-03-26 07:28:10

二进制手表

概述:二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 1,最低位在右侧。

输入:turnedOn = 1
输出:["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"]

输入:turnedOn = 9
输出:[]

方法一:暴力循环

思路:对小时和分钟进行暴力循环,然后把二进制转换即可。

# 暴力循环
# 对小时和分钟进行暴力循环,然后把二进制转换即可。
class Solution:
    def readBinaryWatch(self, turnedOn: int) -> List[str]:
        ans = list()
        for h in range(12):
            for m in range(60):
                if bin(h).count("1") + bin(m).count("1") == turnedOn:
                    (f"{h}:{m:02d}")
        return ans

方法二:二进制枚举

思路:用位运算取出高 4 位和低 6 位的数,然后转换即可。

# 二进制枚举
# 用位运算取出高 4 位和低 6 位的数,然后转换即可。
class Solution:
    def readBinaryWatch(self, turnedOn: int) -> List[str]:
        ans = list()
        for i in range(1024):
            h, m = i >> 6, i & 0x3f   # 用位运算取出高 4 位和低 6 位
            if h < 12 and m < 60 and bin(i).count("1") == turnedOn:
                (f"{h}:{m:02d}")
        return ans

总结

这题不错,但这表肯定没人买!