题目
给定数字x,输出 反转后的数字,不能超过int的存储范围
解题思路
求模取余
将数字x进行10的求模取余,再将取得的余数每次*10加上新的余数,注意点在于不能超过int的存储范围,即-2147483648到+2147483647,所以当res为214748364时,下一个余数不能超过7,否则会超过范围,同理可得负数的判定方式
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;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer/submissions/