Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
click to show spoilers.
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
public class Solution {
public int reverse(int x) {
if(x == 0)
return 0;
int result = 0;
while(x != 0){
if(result > Integer.MAX_VALUE / 10 || result < Integer.MIN_VALUE / 10)
return 0;
result = result * 10 + x % 10;
x /= 10;
}
return result;
}
}
Java2
class Solution {
public int reverse(int x) {
int mainNum = 0;
while(x != 0) {
int digit = x % 10;
// If there is going to be an overflow
if(mainNum < 0 && mainNum < Integer.MIN_VALUE / 10
|| mainNum > 0 && mainNum > Integer.MAX_VALUE / 10 ) {
return 0;
}
mainNum *= 10;
mainNum += digit;
x /= 10;
}
return mainNum;
}
}
JS
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
const reversed = x.toString().split("").reverse();
if (reversed[reversed.length - 1] === 0) {
reversed.pop();
}
if (x < 0) {
reversed.unshift("-");
}
const final = parseInt(reversed.join(""));
if (final > 2147483648 || final < -2147483649) {
return 0;
}
return final;
};
class Solution {
public int reverse(int x) {
boolean negativeFlag = false;
if(x < 0)
{
negativeFlag = true;
x = -x;
}
int prev_rev_num = 0, rev_num = 0;
while(x != 0)
{
int current_digit = x % 10;
rev_num = (rev_num * 10) + current_digit;
if((rev_num - current_digit) / 10 != prev_rev_num)
{
return 0;
}
prev_rev_num = rev_num;
x = x / 10;
}
return (negativeFlag == true) ? -rev_num : rev_num;
}
}