LeetCode Algorithms 7. Reverse Integer 题解

题目:

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

对输入的整数进行翻转,保留符号,与之前做过的atoi有点类似。

算法大致思想:
1. 对于输入的x,先mod10,得到余数,
2. 然后对上一次计算的结果(结果最开始是0)做进位(乘以10)操作,再加上这个余数,得到本次计算的结果,
3. 每一次计算后都对x右移一位(x/=10),
4. 循环条件为x>0

与上一次做的atoi类似,在计算过程中,检测计算前的res值与计算后的res/10,是否相等,不相等则发生溢出,return 0。

最后实现代码:

int reverse(int x) {
    if (x == INT_MIN) return 0;
    int res = 0;
    int isNag = 1;
    int _x = x;
    if (x < 0) {
        isNag = -1;
        _x = 0 - x;
    }
    while (_x > 0) {
        int oldres = res;
        res = (_x % 10) + res * 10;
        if (res / 10 != oldres) return 0;
        _x /= 10;
    }
    return res * isNag;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章