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
一刷:
由于不知道輸入的位數(shù)右蒲,就用while循環(huán)求最低位的數(shù)字姜钳,依次降位,然后每次降位再把最低位的和升位:
public static int reverse(int x) {
int result = 0;
if (x == 0) {
return result;
}
while (true) {
int n = x % 10;
result = result * 10 + n;
x = (x - n) / 10;
if (x == 0) {
break;
}
}
return result;
}
然而忽略了雁芙,反轉(zhuǎn)數(shù)字后越界的問(wèn)題泡徙。
于是考慮在每次賦值的時(shí)候判斷下是否能還原到之前的值,如果可以還原的話(huà)就OK了刽脖。
public static int reverse(int x) {
int result = 0;
if (x == 0) {
return result;
}
while (true) {
int n = x % 10;
result = result * 10 + n;
if (result % 10 != n) {
return 0;
}
System.out.println("result:" + result + ";x:" + x + ";n:" + n);
x = (x - n) / 10;
if (x == 0) {
break;
}
}
return result;
}