情景再现
原文地址
:力扣
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
实例
周公答疑
此题根据题意很容易得出就是一个数字反转,原数字可正可负可为零,最简单的一种思路就是通过一个字符串作为中间临时存储,然后再把字符串强转为int类型
易错点:“如果反转后整数超过 32 位的有符号整数的范围
[−2^31, 2^31 − 1]
,就返回 0”。在返回数据之前,需要对结果进行一个判断
此处一共有两种判断方式
注意题目要求是在32位环境中
if x < math.MinInt32 || x > math.MaxInt32 {
return 0
}
if x > 1<<31-1 || x < -1*(1<<31) {
return 0
}
码点
func reverse(x int) int {
str := ""
if x < 0 {
str = "-"
x = -1 * x
}
for x != 0 {
str = fmt.Sprintf("%s%d", str, x%10)
x /= 10
}
x, _ = strconv.Atoi(str)
// if x > 1<<31-1 || x < -1*(1<<31) {
// return 0
// }
if x < math.MinInt32 || x > math.MaxInt32 {
return 0
}
return x
}
版权声明:本文为yo_le原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。