算法題 - 整數反轉

本章主要介紹算法:整數反轉。

以下代碼示例提供了兩種實現方式,一種是字符串操作,另一種是數字計算

方法一:

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