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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章