题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解决方案
题目很简单,通过求模和求余可以实现整数的反转,需要注意负数以及值溢出问题就好。
func reverse(x int) int {
var tmp int
var sum int
const (
MAX_INT = 2147483647
MIN_INT = -2147483648
)
flag := 1
if x < 0 {
flag = -1
x = -1 * x
}
for x != 0 {
// fmt.Println(x)
tmp = x % 10
sum = sum*10 + tmp
x = x / 10
}
res := flag * sum
if (res > MAX_INT) || (res < MIN_INT) {
return 0
}
return res
}
复杂度分析
时间复杂度:O(log(x)),x 中大约有log10(x)位数字。
空间复杂度:O(1)。

本文介绍了一种算法,用于反转32位有符号整数的每一位数字,包括负数处理和溢出检查,使用Go语言实现。
2288

被折叠的 条评论
为什么被折叠?



