使用kotlin完成这个题目:401. 二进制手表 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。 例如,下面的二进制手表读取 "3:25" 。 (图源:WikiMedia - Binary clock samui moon.jpg ,许可协议:Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) ) 给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。 小时不会以零开头: 例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。 分钟必须由两位数组成,可能会以零开头: 例如,"10:2" 是无效的时间,正确的写法应该是 "10:02" 。 示例 1: 输入:turnedOn = 1 输出:["0:01","0:02","0:04","0:08","0:16","0:32","1:00","2:00","4:00","8:00"] 示例 2: 输入:turnedOn = 9 输出:[] 提示: 0 <= turnedOn <= 10
时间: 2023-07-05 20:16:08 浏览: 112
kotlin-plugin-211-1.5.30-release-408-AS7442.40.zip
以下是使用 Kotlin 实现的代码:
```kotlin
class Solution {
fun readBinaryWatch(turnedOn: Int): List<String> {
val res = mutableListOf<String>()
for (hour in 0..11) {
for (minute in 0..59) {
if (Integer.bitCount(hour) + Integer.bitCount(minute) == turnedOn) {
res.add("$hour:${minute.toString().padStart(2, '0')}")
}
}
}
return res
}
}
```
该算法很简单,它遍历了小时和分钟的所有可能值,并计算亮灯的数量。如果亮灯的数量等于输入的 `turnedOn` 参数,则将当前时间添加到结果列表中。
在这个算法中,我们使用了 `Integer.bitCount()` 函数来计算一个整数中的二进制位数。`toString().padStart(2, '0')` 函数用于将分钟数转换为两位数字。
阅读全文