Given a signed 32-bit integer , return with its digits reversed. If reversing 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).
Example 1:
Example 2:
Example 3:
Constraints:
Critical Problem Areas:
Handling Negative Numbers:
Handling Trailing Zeros:
32-bit Integer Overflow:
Solution Approach:
Extract the Sign:
Reverse the Digits:
Check for Overflow:
Return the Result:
Time Complexity:
Space Complexity:
Implementation:
public int reverse(int x) {
if(x == Integer.MIN_VALUE || x == Integer.MAX_VALUE) return 0;
int rev = 0;
while(x != 0) {
int ld = x % 10;
// Reduces runtime score in leetcode
//if(isIntOutOfRange(rev, ld)) return 0;
//leet code - beats 100%
if((rev > Integer.MAX_VALUE / 10) || (rev < Integer.MIN_VALUE / 10)) return 0;
rev = (rev * 10) + ld;
x = x / 10;
}
return rev;
}
/**
* Verifies if the reverse integer will overflow if last digit is added
*/
public boolean isIntOutOfRange(int rev, int ld) {
if (rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && ld > 7)) {
return true;
}
if (rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && ld < -8)) {
return true;
}
return false;
}