描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。
分析
每次都求取数的个位数,保存,整除以10,数整体向右移动了一位。如此往复,直到为0,得到数在每一位上的数字,反向拼接起来,即反转。
import java.util.*;
public class Solution {
public int reverse (int x) {
long rev = 0;
int cur = x > 0 ? x : -x;
while(cur != 0){
int temp = cur % 10;
rev = rev * 10 + temp;
cur /= 10;
}
rev = x > 0 ? rev : -rev;
if(rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE){
return 0;
}
return (int)rev;
}
}