给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题解
简单题。每次把数x的个位数分离出来,用新的数y加起来。有堆栈的思想。
- 题目的难点在于不能溢出一个范围
- 所以解题过程中,需要有判断条件
我的解法代码
import java.lang.reflect.Array;
import java.util.*;
public class leetcode {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
int rev = reverse(x);
System.out.println(rev);
}
public static int reverse(int x) {
int rev = 0;//记录新数字
while (x != 0) {
//pop操作
int pop = x % 10;
x /= 10;
//push操作
//不能溢出范围,加上判断条件
if ((rev > Integer.MAX_VALUE / 10) || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
if ((rev < Integer.MIN_VALUE / 10) || (rev == Integer.MIN_VALUE / 10 && pop < (-8))) return 0;
rev = rev * 10 + pop;
}
return rev;
}
}