整数反转:
给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。
思路:
- 首先判断是否超界,超界就返回 0
- 不超界就装成字符串,再转字符数组,前后颠倒,再转回去输出
注意点:原先数不超界情况下,反转后可能超界
解法:
public static void main(String[] args) {
Reverse reverse = new Reverse();
System.out.println("--> " + reverse.reverse(-2147483646));
// 1534236469
}
public int reverse(int x) {
if (x >= (Math.pow(2, 31)-1) || x <= Math.pow(-2, 31)) {
return 0;
}
int flag = 1;//true --> +
System.out.println(x);
if (x < 0) {
flag = -1;
x = -x;
}
String originalString = String.valueOf(x);
char c[] = originalString.toCharArray();
char save;
for (int i = 0; i < ((c.length) / 2); i++) {
save = c[i];
c[i] = c[c.length - 1 - i];
c[c.length -1 - i] = save;
}
originalString = String.valueOf(c);
System.out.println(originalString);
try {
x = (int)Integer.parseInt(originalString);
} catch (Exception e) {
// TODO: handle exception
return 0;
}
return x * flag;
}