題目
給出一個32位的有符號整數,數值範圍在[-2^31, 2^31-1]。要求輸出翻轉的整數。如果反轉的整數不在數值範圍內則是溢出,輸出0。如:輸入1234,輸出4321;輸入-45,輸出-54
思路
將數字轉爲字符串,然後反轉即可,不過要注意反轉後的數字可能會溢出的問題。
代碼
public int reverse(int x) {
//將數字轉爲字符串
String numStr = x + "";
//用於判斷是否是負數
Boolean isMinus = false;
if (numStr.indexOf("-") == 0) {
//負數的符號不可反轉,只反轉數字
numStr = numStr.substring(1);
isMinus = true;
}
//字符串反轉
numStr = new StringBuffer(numStr).reverse().toString();
//字符串轉數字
int num = 0;
try{
num = Integer.parseInt(numStr);
}catch(Exception e){
//溢出返回0
return 0;
}
if (isMinus) {
num = -1 * num;
}
//是否溢出
int minNum = (int) (Math.pow(2,31)) * -1;
int maxNum = (int) Math.pow(2,31) - 1;
if (num < minNum || num > maxNum) {
return 0;
}
return num;
}