整數反轉解析

2021-10-21 23:17:36 字數 952 閱讀 3217

假設環境不允許儲存 64 位整數(有符號或無符號)。

輸入:123

輸出:321

輸入:-123

輸出:-321

首先實現整數反轉

123反轉為321

當它不是1位數時,拿到它的每一位

while

(n/10

)

第一次拿到3,第二次拿到2,輸出結果要為32

既然要反轉,那麼第一次拿到的數字就要比第二次拿到的數字高一位,所以每次進入迴圈時,都要把上一次的結果增加一位再把這次取到的數放在末尾,即加上本次取到的數字

當n是一位數時,退出迴圈,將其放在反轉後的結果的最後一位,仍然是把之前的結果增加一位,加上現在的n

int

reverse

(int n)

return ret*

10+n;

}

然後考慮結果溢位的問題

32位有符號的整數取值範圍是 -231 ~ 231-1之間(-2147483648 ~ 2147483647)

增加對結果與int的最大最小值進行比較判定,超出取值範圍函式返回0;

int

reverse

(int n)

//判斷溢位情況 最終結果ret*10+n 所以這裡的ret與int_max/10進行比較

//當ret=最大最小值/10時,其*10後加7和-8 就是32位整數的最大最小值if(

(ret>int_max/

10||

(ret==int_max/

10&&n>7)

)||(ret10||

(ret==int_max/

10&&n<-8

)))return0;

return ret*

10+n;

}

整數反轉 深度解析

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...

lintcode反轉整數

反轉整數 將乙個整數中的數字進行顛倒,當顛倒後的整數溢位時,返回 0 標記為 32 位整數 您在真實的面試中是否遇到過這個題?yes 樣例給定x 123,返回321 給定x 123,返回 321 標籤 相關題目 本題採用數學計算法而不是文字翻轉,所以末尾為0的翻轉不用考慮。坑就是要考慮溢位啊!一開始...

7 整數反轉

鏈結 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後...