題目描述
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
思路:
輸入的數記爲num。
第一次將num對10取餘得到num個位上的數,然後用一個數tem記錄num除以10的結果,然後用tem對10取餘得到num十位數的數字,以此類推,可以得到每一個位上的數字,然後將倒轉即可。
僞代碼:
while(num ! = 1){
ret = ret *10 + num%10
num /= 10;
}
需要注意的是將一個32位數字倒轉時,如果數字很大,容易溢出,溢出的時候返回0。
代碼
/**
* 將一個32位整數翻轉
* @author user
* 注意:檢查ret後是否溢出
*/
public class Solution {
public int reverse(int x) {
boolean flag = false;
long ret = 0;
if(x < 0){
x = -x;
flag = true;
}
while(x > 0){
ret = ret*10 + x % 10;
x /= 10;
}
if(ret > Integer.MAX_VALUE || ret < Integer.MIN_VALUE)
return 0;
if(flag){
ret = -ret;
}
return (int)ret;
}
}