7. Reverse Integer

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值