标签:简单 判断 最好 算法 pre 条件 long 简单的 style
【题目描述】
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
【题解】
颠倒正负存在新的数里,要从原来的数最后一位开始在新数里累加
即是 += 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 }
代码如上
我是一个菜鸟程序员,我从最简单的简单题慢慢做起,它虽然简单,但我每一道都要做到最好
标签:简单 判断 最好 算法 pre 条件 long 简单的 style
原文地址:https://www.cnblogs.com/jhjgarden/p/12610044.html