One minute
Week1002_algorithm
Algorithm
leecode 7. 翻转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。
分析
这道题把数字翻转,思路是使用模运算和直接除以10运算获得每一位数字,然后要考虑越界问题,比较笨的方式是转为字符数组,然后倒序排列后转为int,本人不才,使用了第二种。代码如下:
public int reverse(int x) {
if (x == Integer.MIN_VALUE) {
return 0;
}
boolean positive = x < 0;
if (positive) {
x = -x;
}
String n = String.valueOf(x);
char[] chars = n.toCharArray();
StringBuilder sb = new StringBuilder();
for (int len = chars.length, i = len - 1; i >= 0; i--) {
sb.append(chars[i]);
}
String result = sb.toString();
try {
if (positive) {
return -Integer.parseInt(result);
} else {
return Integer.parseInt(result);
}
} catch (NumberFormatException e) {
return 0;
}
}
当然,高效的代码就是模运算取每一位,然后循环乘以10,代码如下:
public int reverse(int x) {
int y = 0;
while (x != 0) {
if (y > Integer.MAX_VALUE / 10 || y < Integer.MIN_VALUE / 10) {
return 0;
}
y = y * 10 + x % 10;
x = x / 10;
}
return y;
}
Read other posts