英文题目:
Given a 32-bit signed integer, reverse digits of an integer.
给一个32位的有符号整形,翻转这个数
例子:
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store
integers within the 32-bit signed integer range: [−2^31, 2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
当超出范围后请返回0
想法:
1.拿到数之后 % 10 再 /10 (余数+ reult) * 10 然后 一直循环 ,如果超出 就会抛出异常,然后返回 0
2. 超出的判断方式为 只要reult > Integer.MAX_VALUE/10 + 7 reult < Integer.MIN_VALUE /10 - 8 就会超
class Solution {
public int reverse(int x) {
int result = 0;
int rem = 0;//余数
while(x!=0){
rem = x % 10;
x = x / 10;
//进行判断
if (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE / 10 && rem > 7)) return 0;
if (result < Integer.MIN_VALUE/10 || (result == Integer.MIN_VALUE / 10 && rem < -8)) return 0;
result = result* 10 +rem;
}
return result;
}
}