给定数字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/
更详细的题解:
链接:https://leetcode-cn.com/problems/reverse-integer/solution/tu-jie-7-zheng-shu-fan-zhuan-by-wang_ni_ma/