美文网首页
7. Reverse Integer

7. Reverse Integer

作者: 倔强的炉包 | 来源:发表于2018-02-10 14:41 被阅读9次

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output:  321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

一刷:
由于不知道输入的位数,就用while循环求最低位的数字,依次降位,然后每次降位再把最低位的和升位:

public static int reverse(int x) {
        int result = 0;
        if (x == 0) {
            return result;
        }
        while (true) {
            int n = x % 10;
            result = result * 10 + n;
            x = (x - n) / 10;
            if (x == 0) {
                break;
            }
        }
        return result;
    }

然而忽略了,反转数字后越界的问题。
于是考虑在每次赋值的时候判断下是否能还原到之前的值,如果可以还原的话就OK了。

public static int reverse(int x) {
        int result = 0;
        if (x == 0) {
            return result;
        }
        while (true) {
            int n = x % 10;
            result = result * 10 + n;
            if (result % 10 != n) {
                return 0;
            }
            System.out.println("result:" + result + ";x:" + x + ";n:" + n);
            x = (x - n) / 10;
            if (x == 0) {
                break;
            }
        }
        return result;
    }

相关文章

网友评论

      本文标题:7. Reverse Integer

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