#0.题目描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2_31 , 2_31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
#1.解法1
对于取个位,可以对10求余,迭代除以10。
注意越界的判断,特别是LeetCode不支持移位运算。
虽然这种感觉适用于栈或者队列,但是这个题不用更简单,否则使用空间增大。
// class Solution {
// public:
// int reverse(int x) {
// queue<int> queueX;
// int xin, xout;
// xin = x;
// while (xin / 10) {
// queueX.push(xin%10);
// xin /= 10;
// }
// queueX.push(xin);
// if (!queueX.empty()) {
// xout = queueX.front();
// queueX.pop();
// }
// while(!queueX.empty()) {
// if (xout>214748364 || (xout==214748364 && queueX.front()>7))
// return 0;
// //判断是否 小于 最小32位整数
// if (xout<-214748364 || (xout==-214748364 && queueX.front()<-8))
// return 0;
// xout = xout*10;
// xout += queueX.front();
// queueX.pop();
// }
// return xout;
// }
// };
class Solution {
public:
int reverse(int x) {
int res = 0;
while(x!=0) {
//每次取末尾数字
int tmp = x%10;
//判断是否 大于 最大32位整数
if (res>214748364 || (res==214748364 && tmp>7)) {
return 0;
}
//判断是否 小于 最小32位整数
if (res<-214748364 || (res==-214748364 && tmp<-8)) {
return 0;
}
res = res*10 + tmp;
x /= 10;
}
return res;
}
};
作者:wang_ni_ma
链接:https://leetcode-cn.com/problems/reverse-integer/solution/tu-jie-7-zheng-shu-fan-zhuan-by-wang_ni_ma/