新手練習,學習進度剛到 IO
解題目的是為了訓練自己的思考模式還有熟悉度,肯定不是最佳解
題目:
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
題目大意:給定一個 32 位有符號整數,將整數中的數字進行反轉
Example 1:
Input: x = 123
Output: 321
Example 2:
Input: x = -123
Output: -321
Example 3:
Input: x = 120
Output: 21
思路
給定數值會是介於 int的最大值與最小值,所以會面臨幾個問題
1.正負數
2.溢位(overflow)
class Solution {
public int reverse(int x) {
int max = Integer.MAX_VALUE;
//宣告2個long類型變數來存放計算的值,避免溢位
long val;
long revNum=0L;
//把x變成正數
val= x>0? x:-x;
while(val>0){
revNum = val %10 + revNum*10;
val/=10;
}
//超過in值最大數則回傳0
if(revNum>max) return 0;
return x>0?(int)revNum:(int)-revNum;
}
}
期待你解更多題目 加油!