给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:输入:x = -123
输出:-321来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
想法:因为是反转,所以其实可以这样子想,我们取出最后一个数是最好取的。所以从最后一个数下手,然后我们需要做的是把最后的一个数给挪动到最高位,然后重复拿出,挪前一位,拿出,挪前一位。。。。
所以拿出就交给%10,而前去就交给*10,这个*10是除了拿出的那一个数字,拿出的数字是直接加上去的。
然后我们得到的是一个长整型,因为有可能超过整型的长度,这个时候我们进行强制转换,如果它的结果不是原来的数字说明超过了它的长度,这个时候我们就把它置为0.
class Solution {
public:
int reverse(int x) {
long n = 0;
while(x!=0)
{
n = n*10+x%10;
x=x/10;
}
return (int)n == n?n:0;
}
};