反向整數 給定一個 32 位有符號整數,將整數中的數字進行反轉,如果超出整數的最大或者最小範圍返回0 更多文章查看個人博客 "個人博客地址:反向整數" 方法一 利用StringBuilder的reverse方法,將數字轉換成字元反轉然後再轉換回整數 java public int reverseIn ...
反向整數
給定一個 32 位有符號整數,將整數中的數字進行反轉,如果超出整數的最大或者最小範圍返回0
更多文章查看個人博客 個人博客地址:反向整數
方法一
利用StringBuilder的reverse方法,將數字轉換成字元反轉然後再轉換回整數
public int reverseInteger(int num) {
if (num == 0 || (num < 10 && num > -10)) {
return num;
}
// 獲得絕對值 去掉正負號
int temp = Math.abs(num);
StringBuilder st = new StringBuilder(String.valueOf(temp));
StringBuilder reverse = st.reverse();
long result = Long.valueOf(reverse.toString());
if (num > 0) {
return result > Integer.MAX_VALUE ? 0 : (int) result;
} else {
return result < Integer.MIN_VALUE ? 0 : -(int) result;
}
}
- StringBuilder reverse方法也是通過一個for迴圈把字元反轉,時間複雜度是O(n),空間複雜度O(n)
名稱 | 結果 |
---|---|
時間複雜度 | O(n) |
空間複雜度 | O(n) |
方法二
利用一個迴圈取餘的方法將整數反轉,效率要比上邊方法好
public int reverseInteger(int num) {
if (num == 0 || (num < 10 && num > -10)) {
return num;
}
long result = 0;
for (; num != 0; num /= 10) {
result = result * 10 + num % 10;
}
return result > Integer.MAX_VALUE || result < Integer.MIN_VALUE ? 0 : (int) result;
}
名稱 | 結果 |
---|---|
時間複雜度 | O(n) |
空間複雜度 | O(1) |
更多文章查看個人博客 個人博客地址:反向整數