本章主要介绍算法:整数反转。
以下代码示例提供了两种实现方式,一种是字符串操作,另一种是数字计算
方法一:
public int reverse2(int x) {
if (!(-2147483648 <= x && x <= 2147483647)) {
return 0;
}
StringBuffer sb = new StringBuffer();
if (x < 0) {
sb.append("-");
x = x * -1;
}
String str = x + "";
for (int i = str.length(); i > 0; i--) {
sb.append(str.charAt(i-1));
}
return Integer.parseInt(sb.toString());
}
代码解读:此方法使用字符串的操作方式,通过下标倒叙获得字符,再进行拼接得到反转后的数字
方法二:
public int reverse(int x) {
if (!(-2147483648 <= x && x <= 2147483647)) {
return 0;
}
StringBuffer sb = new StringBuffer();
if (x < 0) {
sb.append("-");
x = x * -1;
}
int length = String.valueOf(x).length();
int temp = x;
int getFirst = 1;
for (int i = 0;i < length - 1; i++) {
int k = temp % 10;
sb.append(k);
temp = (temp - k) / 10;
getFirst *= 10;
}
sb.append(x/getFirst);
return Integer.parseInt(sb.toString());
}
代码解读:此方法通过数字计算得到反转后的数字。
总结:
性能:方法二 优于 方法一
复杂度:方法二 比 方法一 复杂
所以,如果不考虑性能,方法一 足够应用于多数场景。
每一种算法都有优缺点,都是合适的场景,所以选择算法时,应当选择最适合当前场景的,以及在预算内的即可