LeetCode Golang 7. 整数反转
7. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
Tips :
Math包给出的类型大小的边界:
// Integer limit values. const ( MaxInt8 = 1<<7 - 1 MinInt8 = -1 << 7 MaxInt16 = 1<<15 - 1 MinInt16 = -1 << 15 MaxInt32 = 1<<31 - 1 MinInt32 = -1 << 31 MaxInt64 = 1<<63 - 1 MinInt64 = -1 << 63 MaxUint8 = 1<<8 - 1 MaxUint16 = 1<<16 - 1 MaxUint32 = 1<<32 - 1 MaxUint64 = 1<<64 - 1 )
思路: Itoa --> 字符串反转 --> Atoi --> 判断大小
package main
import (
"fmt"
"math"
"reflect"
"strconv"
"unsafe"
)
//给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
// 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
func reverse(x int) int {
if x < 10 && x > -10 {
return x
}
flag := 1 // 正负标志位 1 表示为正, -1表示为负
rst := x
if x < 0 {
flag = -1
rst *= flag // 转换为正数方便操作
}
rstString := ""
tmpString := strconv.Itoa(rst)
for i:=len(tmpString)-1;i>=0;i--{
rstString += string(tmpString[i])
}
//fmt.Println(rstString)
rst,err := strconv.Atoi(rstString)
if err != nil || rst > math.MaxInt32{
//fmt.Println("Atoi Error : ",err)
return 0
}
return rst * flag
}
//-2147483648到2147483647
// 9646324351
func main() {
x := reverse(1534236469)
fmt.Println(x,reflect.TypeOf(x),unsafe.Sizeof(x))
}
浙公网安备 33010602011771号