算法題 - 整數反轉
本章主要介紹算法:整數反轉。
以下代碼示例提供了兩種實現方式,一種是字符串操作,另一種是數字計算
方法一:
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());
}
代碼解讀:此方法通過數字計算得到反轉後的數字。
總結:
性能:方法二 優於 方法一
複雜度:方法二 比 方法一 複雜
所以,如果不考慮性能,方法一 足夠應用於多數場景。
每一種算法都有優缺點,都是合適的場景,所以選擇算法時,應當選擇最適合當前場景的,以及在預算內的即可
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/RGiDMwMthmIYhW3MnrVhmw