LeetCode算法入門- Reverse Integer-day6
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
class Solution {
public int reverse(int x) {
long result = 0;
//取絕對值
int temp = Math.abs(x);
while(temp > 0){
//核心是這裏,取反的關鍵
result = result * 10 + temp % 10;
temp = temp / 10;
}
//記得判斷是否溢出,這裏很關鍵,這道題的關鍵
if(result > Integer.MAX_VALUE)
return 0;
if(x >= 0)
return (int)result;
//這裏的符號是另外來進行判斷,還有就是強制類型轉換,將long強轉爲int
else return -(int)result;
}
}
方法二:將int類型轉換爲StringBuffer類型,然後調用reverse()方法
class Solution {
public int reverse(int x) {
int temp = 0;
//這裏是原因在下面圖片
if(x == -2147483648)
return 0;
// temp = -x;
else
temp = Math.abs(x);
String str = Integer.toString(temp);
//記得要轉換爲StringBuffer類型纔行
StringBuffer sb = new StringBuffer(str);
String reverseStr = sb.reverse().toString();
//將字符串類型轉換爲長整型(以防它出界)
long l = Long.parseLong(reverseStr);
if(l > Integer.MAX_VALUE)
reverseStr = "0";
if(x > 0)
return Integer.parseInt(reverseStr);
else
return -Integer.parseInt(reverseStr);
}
}