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