【Leetcode-简单-07】整数翻转
题目描述:
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
- 给定一个 32 位的有符号整数 x ,要求程序返回将 x 中的数字部分反转后的结果。
- 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,(溢出)就返回 0。
- 假设环境不允许存储 64 位整数(有符号或无符号)。
示例:
- 提示:
代码(python3)
class Solution:
def reverse(self, x: int) -> int:
int_min,int_max = -2**31,2**31-1
rev = 0
while x != 0:
# 判断是否溢出
if rev < int_min // 10 +1 or rev > int_max // 10:
return 0
digit = x % 10;
# Python3 的取模运算在 x 为负数时也会返回 [0, 9) 以内的结果,因此这里需要进行特殊判断
if x <0 and digit >0:
digit -=10
x = (x-digit) // 10
rev = rev * 10 + digit
return rev
代码(C++)
class Solution {
public:
int reverse(int x) {
int rev = 0;
while (x!=0){
if (rev<INT_MIN / 10 || rev >INT_MAX / 10){
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev *10 + digit;
}
return rev;
}
};