美文网首页
每天一题LeetCode【第6天】

每天一题LeetCode【第6天】

作者: 草稿纸反面 | 来源:发表于2017-01-26 01:10 被阅读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;
    }```
    

    相关文章

      网友评论

          本文标题:每天一题LeetCode【第6天】

          本文链接:https://www.haomeiwen.com/subject/btsxittx.html