给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。当反转后的结果超出[-2^31,2^31]时返回0.
譬如输入“123”,返回“321”;输入“-123”,返回“-321”;输入“1534236469”,返回0
我的思路:将输入的整数转为字符串处理。(也可以直接整数处理)。可以使用栈来反转,也可以直接反转。
我的代码:
public class ReverseInteger {
public int reverse(int x) {
String s = String.valueOf(x);
char[] chs = s.toCharArray();
int len = s.length();
int i = 0,j = s.length()-1;
if(chs[0] == '-')i = 1;
while (i<j) {
char t = chs[i];
chs[i] = chs[j];
chs[j] = t;
i++;
j--;
}
s = String.valueOf(chs);
if(chs[0] == '-'){
if (s.length()>11) return 0;
if (s.compareTo("-2147483648")>0&&s.length() == 11) return 0;
i = 1;
}else {
if (s.length()>10) return 0;
if(s.compareTo("2147483647")>0&&s.length() == 10)return 0;
}
int num = Integer.parseInt(s);
return num;
}
public static void main(String[] args) {
System.out.println(new ReverseInteger().reverse(1534236469));
}
}