7. 整数反转
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123
输出: 321
示例2:
输入: -123
输出: -321
示例3:
输入: 120
输出: 21
解题思路
首先,是范围问题,32位的有符号整数,这里我使用16进制来存储,如果结果比超出了最大最小的范围,则返回0。
其次,先将输入整数每次对10取余,把此数放在结果数的末尾,就是将原结果x10再加上取余的数。最后把输入的数除10,相当于把最小的数拿掉了。
最后判断范围进行返回就好。
代码
class Solution {
public:
int reverse(int x) {
int max = 0x7fffffff; //int的最大值
int min = 0x80000000; //int的最小值
long ans = 0;
while(x!=0){
ans = ans*10+x%10;
x = x/10;
}
if(ans > max || ans < min){
return 0;
}
else{
return ans;
}
}
};