每天一题LeetCode【第6天】

2017-01-26  本文已影响132人  草稿纸反面

T7. Reverse Integer【Easy

题目

把一个 Integer 整数逆转

示例1: x= 123, return 321

示例2: x= -123, return -321

思路

要承认这个 Top Solution 写的比我的代码短多了,思路很巧妙(哎真的好短!!!)。

它通过取余数得到尾数,然后通过不断result*10+尾数把最开始的尾数始终保持在首位,达到逆转的目的。

但是要注意的是,这里会出现一个溢出的问题。需要检测溢出,并返回0。这个代码用公式算回原来的值看前后是否相同,以此判断是否溢出。

具体可以看下面代码以及注释(我怎么总说这句话( • ̀ω•́ ))。

代码

代码取自 Top Solution,稍作注释

public int reverse(int x)
{
    int result = 0;
    while (x != 0)
    {
        //得到末尾的数
        int tail = x % 10;
        int newResult = result * 10 + tail;
        //这里为了检测溢出,若溢出两者就不相等了,就返回0
        if ((newResult - tail) / 10 != result)
        { return 0; }
        result = newResult;
        //去掉末尾的数重新赋给x
        x = x / 10;
    }

    return result;
}```
上一篇下一篇

猜你喜欢

热点阅读