1. 程式人生 > 實用技巧 >7. 整數反轉(位數反轉)

7. 整數反轉(位數反轉)

題目

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例1:

輸入: 123
輸出: 321

示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為[−2^31, 2^31− 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

來源:力扣(LeetCode)


解答

C語言

依次對x的末位進行處理,即通過x%10取餘獲得個位數,通過x/10替代現有x。
通過ret變數儲存當前個位數,每進行依次迴圈,則ret將值×10,並加上新增個位數。
特別需要注意x的取值範圍。

//0 ms	5.1 MB
int reverse(int x){
    long ret = 0;
    while (x != 0) {
        ret = x % 10 + ret * 10;
        x = x / 10;
    }
    if (ret > 2147483647 || ret < -2147483648 ) {
        return 0;
    }else {
        return (int)ret;
    }
}

golang

同理

//	0 ms	2.2 MB
func reverse(x int) int {
    var ret int64 = 0
    for x != 0 {
        ret = int64 (x) % 10 + ret * 10
        x = x / 10
    }
    if (ret > 2147483647 || ret < -2147483648 ) {
        return 0
    }else {
        return int (ret)
    }
}