leetcode小白刷题之旅----7. Reverse Integer
仅供自己学习
题目:
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
思路:
通过对x模10使后面的数往前移,每多一位,原来的x*10再加上余数即可。
细节处理:
int 类型范围的限制,当x的范围在 -2^31~2^31-1范围内,但反转后得到的数可能会超过。所以要加IF来限制大小。
这里如果n在INT_MAX/10的情况都大于了那么显然明显超出了INT范围。如果n=INT_MAX/10,那么在判断最后一位数是不是小于 7,因为2^31-1这个数最小的那一位为7,只有小于7才不会溢出。
INT_MIN情况同上。
代码:
1 class Solution { 2 public: 3 int reverse(int x) { 4 int n=0; 5 while (x!=0) 6 { 7 if(n > INT_MAX / 10 || (n == INT_MAX / 10 && x%10 > 7)) return 0; 8 if(n < INT_MIN / 10 || (n == INT_MIN/10&& x%10<-8)) return 0; 9 n=n*10+x%10; 10 x=x/10; 11 } 12 return n; 13 } 14 };