題目鏈接:7. Reverse Integer
難度:Easy
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
要點
本題考查的是整數(shù)相加的溢出處理登澜,檢查溢出有這么幾種辦法:
- 兩個正數(shù)數(shù)相加得到負(fù)數(shù)驼壶,或者兩個負(fù)數(shù)相加得到正數(shù),但某些編譯器溢出或優(yōu)化的方式不一樣
- 對于正數(shù)糖耸,如果最大整數(shù)減去一個數(shù)小于另一個數(shù),或者對于負(fù)數(shù)秋度,最小整數(shù)減去一個數(shù)大于另一個數(shù)莲绰,則溢出带猴。這是用減法來避免加法的溢出。
- 使用long來保存可能溢出的結(jié)果督赤,再與最大/最小整數(shù)相比較
Java
class Solution {
public int reverse(int x) {
int res = 0;
while (x != 0) {
if (Math.abs(res) > Integer.MAX_VALUE / 10) return 0;
res = res * 10 + x % 10;
x /= 10;
}
return res;
}
};