給定一個 32 位有符號整數(shù),將整數(shù)中的數(shù)字進行反轉(zhuǎn)。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
解題思路:利用最后一位是翻轉(zhuǎn)后的第一位。取到最后一位后,然后利用這一位的十進制表示法可以得到這一位在最高位時表示的整數(shù)。然后每一位的表示的整數(shù)相加就是最后翻轉(zhuǎn)的整數(shù)。在本算法中需要注意的有兩點:1負的整數(shù)數(shù)字位數(shù)少一位 2負整數(shù)對10進行求返回的是負數(shù)。Math.pow(x,y)表示x的y次冪
代碼:
class Solution {
public int reverse(int x) {
long a = 0;
int b =0;
if(x>=0){
b=(x+"").length();//正數(shù)
}
else{
b=(x+"").length()-1;//負數(shù)有一個負號
}
while (x!=0){
for(int i=0;i<b;i++){
int a1 = x%10;//當前最后一位數(shù)字 ,負數(shù)則顯示的是負數(shù)-25%10 等于 -5
x=(x-a1)/10;//把最后一位數(shù)字剔除掉的新數(shù)字
a += (int) (a1*Math.pow(10,b-i-1)); //相當于將每次的最后一位乘以當前位在十進制中的權(quán)重。234 = 2*10^2+3*10^1+4*10^0
}
}
if((a>Math.pow(2,31)-1)||(a<(-1)*Math.pow(2,31))){ //超過范圍的返回0
return 0;
}
return (int) a;
}
}