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)) }
原文地址:https://www.cnblogs.com/gettolive/p/10204820.html
时间: 2024-11-06 03:54:25