給出一個 32 位的有符號整數(shù)佃扼,你需要將這個整數(shù)中每位上的數(shù)字進行反轉(zhuǎn)键痛。
示例 1: 輸入: 123觅彰;輸出: 321
示例 2:輸入: -123施蜜;輸出: -321
示例 3:輸入: 120曲初;輸出: 21
注意:假設(shè)我們的環(huán)境只能存儲得下 32 位的有符號整數(shù)体谒,則其數(shù)值范圍為 [?2^31, 2^31 ? 1]。請根據(jù)這個假設(shè)臼婆,如果反轉(zhuǎn)后整數(shù)溢出那么就返回 0抒痒。
解答:
public static int reverse(int x) {
int rs=0;
while (x != 0) {
//從個位依次得到數(shù)值
int num=x % 10;
x = x / 10;
//從左到右運算符
if (rs>Integer.MAX_VALUE/10||(rs==Integer.MAX_VALUE/10&&num>7)) {
return 0;
}
if (rs<Integer.MIN_VALUE/10||(rs==Integer.MIN_VALUE/10&&num<-8)) {
return 0;
}
//這樣求和更為簡單 【相比于原數(shù)逆序輸入到集合,集合從最后再求和】
//邊獲取原數(shù)的個位數(shù)颁褂,邊求和【而不是全部逆序后故响,邊獲取逆序數(shù)的個位數(shù),邊求和】
rs=rs*10+num;
}
return 0;
}
注意:
1.需要邊獲取原數(shù)的個位數(shù)颁独,邊求和彩届。
2.求和與判斷是否溢出的先后順序。