没有考虑到的问题:Integer的最大值(2147483647)问题,以为直接用栈即可。事实上并不是这样,如果一个数本来是int,但是反转后会超出最大值范围
class Solution {
public int reverse(int x) {
String data = x +"";
boolean flag = false;
Stack<Character> stack = new Stack();
for(int i = 0; i < data.length(); i++){
if(data.charAt(i) == '-'){
flag = true;
}else{
stack.push(data.charAt(i));
}
}
data = "";
while(!stack.isEmpty()){
data = data + stack.pop();
}
if()
int d = Integer.valueOf(data);
if(flag)
return -d;
else
return d;
}
}
只好按照古老的法子做了
class Solution {
public int reverse(int x) {
int rev = 0;
while(x!=0){
int pop = x % 10;
x = x/10;
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;
}
}