Skip to main content

Reverse Integer

Problem statement

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).

Example 1:

Input: x = 123Output: 321

Example 2:

Input: x = -123Output: -321

Example 3:

Input: x = 120Output: 21

Constraints:

  • -231 <= x <= 231 - 1

My solution

/**
* @param {number} x
* @return {number}
*/
function reverse(x) {
if (x < 10 && x >= 0) {
return x;
}

let res = 0;
let val = Math.abs(x);

while (val > 0) {
res = res * 10 + (val % 10);
val = (val / 10) | 0;
}
res *= Math.sign(x);

return (res | 0) === res ? res : 0;
}