2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。

2023-07-29,,

2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。

福大大 答案2021-09-11:

数位用负数。
时间复杂度:O(logN)。
空间复杂度:O(1)。

代码用golang编写。代码如下:

package main

import (
"fmt"
"math"
) func main() {
i := math.MinInt64
ret := reverse(i)
fmt.Println(i)
fmt.Println(ret)
} func reverse(x int) int {
neg := ((uint(x) >> 63) & 1) == 1
x = twoSelectOne(neg, x, -x)
m := math.MinInt64 / 10
o := math.MinInt64 % 10
res := 0
for x != 0 {
if res < m || (res == m && x%10 < o) {
return 0
}
res = res*10 + x%10
x /= 10
}
return twoSelectOne(neg, res, Abs(res))
} func twoSelectOne(c bool, a int, b int) int {
if c {
return a
} else {
return b
}
} func Abs(a int) int {
if a < 0 {
return -a
} else {
return a
}
}

执行结果如下:


左神java代码

2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。的相关教程结束。

《2021-09-11:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。反转后整数超过 32 位的有符号整数的范围就返回0,假设环境不允许存储 64 位整数(有符号或无符号)。.doc》

下载本文的Word格式文档,以方便收藏与打印。