【题目描述】css
给出一个 32 位的有符号整数,你须要将这个整数中每位上的数字进行反转。程序员
示例 1:spa
输入: 123
输出: 321
示例 2:code
输入: -123
输出: -321
示例 3:blog
输入: 120
输出: 21
注意:内存
假设咱们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,若是反转后整数溢出那么就返回 0。leetcode
【题解】io
颠倒正负存在新的数里,要从原来的数最后一位开始在新数里累加class
便是 += x % 10循环
处理完第一个数,以后要处理第二位,也就是x % 100,若是加入循环,则循环条件设置为:
x / 10
对于返回的整型re,每一次放入一个新的数时,原来的数左移一位,也就是:
re * 10
对于溢出的判断我一开始的想法是直接让int溢出,溢出以后re值正负颠倒,此时只须要判断本来X的值正负与re不一样便可
但是leetcode它报错!!!它不让我天然溢出!!!
好的我向平台低头
接下来就是把re设置成long int 判断是否大于2^31 - 1或者小于-2^31 + 1
1 int reverse(int x){ 2 long int re = 0; 3 for(; x; x /= 10) 4 re = re * 10 + x % 10; 5 if (re > 2147483647 || re < -2147483648) 6 return 0; 7 else 8 return re; 9 }
代码如上
我是一个菜鸟程序员,我从最简单的简单题慢慢作起,它虽然简单,但我每一道都要作到最好