leetcode小白解題記錄——第七題
阿新 • • 發佈:2018-12-31
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
這個問題也比較直觀,關鍵是一個考慮運算的時候有可能出現溢位問題,對於溢位問題,有如下的解決方案:
1.
2. 在做乘10運算的時候先判斷一下class Solution { public: int reverse(int x) { double s=0;//一定要設定成double,否則 下面while迴圈裡 s = s * 10 + x % 10; s每次都乘以10,可能會導致整數溢位 int flag=1; if(x==0) return 0; if(x<0) { flag=-1; x=x*(-1); } while(x>0){ s = s * 10 + x % 10; x=x/10; } s=s*flag; return (s > INT_MAX || s < INT_MIN? 0 : s); } };
-
public class Solution {
-
public int reverse(int x) {
-
if (x == 0) return 0;
-
int res = 0;
-
int sign = 1;
-
if (x < 0) {
-
sign = -1;
-
x = -1 * x;
-
}
-
while (x != 0) {
-
if (res > (Integer.MAX_VALUE - x % 10) / 10) {
-
return 0;
-
}
-
res = res * 10 + x % 10;
-
x = x / 10;
-
}
-
return res * sign;
-
}
- }