給定一個(gè) 32 位有符號(hào)整數(shù)落君,將整數(shù)中的數(shù)字進(jìn)行反轉(zhuǎn)阅嘶。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設(shè)我們的環(huán)境只能存儲(chǔ) 32 位有符號(hào)整數(shù)砰苍,其數(shù)值范圍是 [?2^31, 2^31 ? 1]沉噩。根據(jù)這個(gè)假設(shè)粘勒,如果反轉(zhuǎn)后的整數(shù)溢出揭糕,則返回 0萝快。
解析:
反轉(zhuǎn)整數(shù)最要注意的問(wèn)題就是范圍溢出問(wèn)題。int 型的數(shù)值范圍是 -2147483648 ~ 2147483647
如果要反轉(zhuǎn) 1000000005 反轉(zhuǎn)后為 5000000001 此時(shí)超過(guò)了int范圍著角。
先進(jìn)行范圍判斷揪漩。然后把輸入的數(shù)據(jù)x從個(gè)位開始依次提出賦值給res,每一次循環(huán)雇寇,res會(huì)向左移一位氢拥,加上剛提出的此時(shí)x的個(gè)位蚌铜,循環(huán)最后x/10,進(jìn)行下一位的操作嫩海。當(dāng) x為0時(shí)結(jié)束循環(huán)冬殃,返回res。
Java代碼
class Solution {
public int reverse(int x) {
int res=0;
while(x!=0){
if(Math.abs(res)>2147483647/10) return 0;
res = res * 10 + x % 10;
x /= 10;
}
return res;
}
}