整数反转

16 阅读1分钟

思路一:

转换成字符串,再反转,判断是否超出范围

思路二:

通过除 10 取余的方式,得到每一位,得到切片,再反转重组

func reverse(x int) int {
	var slice []int
	for x != 0 {
		slice = append(slice, x%10)
		x = x / 10
	}
	var result float64 = 0
	//然后基于切片重组
	for i, j := 0, len(slice)-1; i < j; i, j = i+1, j-1 {
		slice[i], slice[j] = slice[j], slice[i]
	}
	//err:需要反转slice
	for i := 0; i < len(slice); i++ {
		result += float64(slice[i]) * math.Pow(10, float64(i))
	}
	//判断是否超过范围
	if result > math.MaxInt32 || result < math.MinInt32 {
		return 0
	}
	return int(result)
}