使用kotlin解决这个问题:7. 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 提示: -231 <= x <= 231 - 1
时间: 2024-01-15 11:05:49 浏览: 96
好的,这是一个简单的整数反转问题,我们可以使用 Kotlin 来解决。首先,我们需要将整数 x 转换成字符串类型进行反转,然后再将反转后的字符串转换成整数类型。
具体实现如下:
```kotlin
fun reverse(x: Int): Int {
val str = x.toString()
val reversedStr = if (x >= 0) str.reversed() else str.drop(1).reversed().prependMinus()
val reversedX = reversedStr.toLong()
return if (reversedX in Int.MIN_VALUE..Int.MAX_VALUE) reversedX.toInt() else 0
}
fun String.prependMinus() = "-$this"
```
上述代码中,我们首先将整数 x 转换成字符串类型,并根据正负号分别处理。如果 x 为正数,则直接反转字符串;如果 x 为负数,则先去掉负号,再反转字符串,并在最前面加上负号。
接下来,我们将反转后的字符串转换成长整型,并判断其是否在 Int 类型范围内。如果在范围内,则将其转换成 Int 类型并返回;如果超出范围,则返回 0。
注意,我们使用了一个辅助函数 `prependMinus()` 来在字符串最前面加上负号,这是因为 Kotlin 的字符串类型并不支持负号的直接添加。
测试代码如下:
```kotlin
fun main() {
println(reverse(123)) // 输出 321
println(reverse(-123)) // 输出 -321
println(reverse(120)) // 输出 21
println(reverse(0)) // 输出 0
}
```
希望能帮到你!
阅读全文