本文转载自微信公众号「Swift社区」,作者Swift君。转载本文请联系Swift社区公众号。
难度水平:中等
1. 描述
给定一个有符号的 32 位整数 x,返回其数字反转的 x。 如果反转 x 导致值超出有符号的 32 位整数范围 -$2^31$ <= x <= $2^31$ - 1,则返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
2. 示例
示例 1
输入: x = 123
输出: 321
- 1.
- 2.
- 3.
示例 2
输入: x = -123
输出: -321
- 1.
- 2.
- 3.
示例 3
输入: x = 120
输出: 21
- 1.
- 2.
- 3.
示例 4
输入: x = 0
输出: 0
- 1.
- 2.
- 3.
约束条件:
-$2^31$ <= x <= $2^31$ - 1
- 1.
3. 答案
class ReverseInteger {
func reverse(_ x: Int) -> Int {
var res = 0
var x = x
while x != 0 {
if res > Int(Int32.max) / 10 || res < Int(Int32.min) / 10 {
return 0
}
res = res * 10 + x % 10
x = x / 10
}
return res
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 主要思想:使用 % 10 反向迭代数字的数字,并使用 * 10 相应地更新结果。
- 注意:适时处理整数溢出。
- 时间复杂度: O(n)
- 空间复杂度: O(1)