LeetCode Algorithms 7. Reverse Integer 题解

来源:互联网 发布:手机原创歌曲软件 编辑:程序博客网 时间:2024/05/22 04:46

题目:

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;}
0 0