整数反转,简单难度,leetcode地址:https://leetcode-cn.com/problems/reverse-integer
1.描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围,就返回 0。
示例 1:
1 | 输入:x = 123 |
2.题解
方法一: 字符串反转
作为我这种算法菜鸟,第一眼就想出来了,把整数转成字符串,然后反转字符串,再转成整数。
虽然这方法没问题,但是总感觉有点low…而且有点不太符合题目要求。
参考代码:
1 | func reverse(x int) int { |
方法二: 取模法
假设一个数字是12345,反转过来就是54321,分开看就是: 50000 + 4000 + 300 + 20 + 1
1 | 1、将12345 % 10 得到5,之后将12345 / 10 |
参考代码:
1 | func reverse(x int) int { |
上面这段代码很关键的地方是解决溢出问题,就是题目要求当整数超过int32范围的时候返回0。
有人可能会好奇,为什么是214748364,我记得是2的32次方是2147483648啊?很简单,因为我们每次都是*10进了一位,所以当然要在其超过之前判断。