描述
Given a 32-bit signed integer, reverse digits of an integer.
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
例子
思路
由于%符号,python 和 c++不一样,python是取模,c++是取余。负数%一个数,取模和取余不一样。所以:python要分正负,c++直接就搞了
答案
- java
class Solution {
public int reverse(int x) {
//第一种,先把数变成正数,但是看来
//第二种,不用将负数变为正数,最后都要变为0 java中%为取余
long res=0;
// int flag=1;
// if(x<0) flag=-1;
// x=Math.abs(x);
while(x!=0) {
res=res*10+x%10;
x=x/10;
}
// res*=flag;
return res<-(1<<31) || res>(1<<31)-1? 0: (int)res;
}
}
- python
def reverse(self, x: int) -> int:
MAX = 2**31-1
MIN = -2**31
num=0
flag = 1
if x<0:
flag = -1
x=-1*x
while x:#到0了就结束
num=num*10+x%10
x = int(x/10)
num = num*flag
return 0 if num>MAX or num<MIN else num
- c++
int reverse(int x) {
long num=0;//可能会超过范围,所以为Long
while (x)//x可为正或负,知道为0
{
num = num*10+x%10;
x /= 10;
}
return (num>INT_MAX || num<INT_MIN)? 0: num;
}