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.

Subscribe to see which companies asked this question.

题目看起来很简单,最简单的思路就是把这个整数转化成String类型,然后反转就可以了。但是如果不转化,可能有一个非常巧妙的思路,核心代码就是几行

       while(x!=0){
            result = result*10+x%10;
            x/=10;
        }

这里一看不太好理解,例如给出的数字是 1234567

第一次执行结果 result的值就是7 x的结果是123456
第二次执行结果 result的值就是76 x的结果是12345
。。。。。

最后实现反转 完整代码:

public int reverse(int x) {
        if(x==Integer.MIN_VALUE)
            return 0;
        int result = 0;
        x=Math.abs(x);
        while(x!=0){
            if(result*10+x%10>Integer.MAX_VALUE)
                return 0;
            result = result*10+x%10;
            x/=10;
        }
        return result;
    }

算法真奇妙。。。。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐