首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

LeetCode 7. Reverse Integer 題解:數學法與字符串法 Java 實現

     編輯:Java 綜合教學

LeetCode 7. Reverse Integer 題解:數學法與字符串法 Java 實現

題目描述

反轉整數數字。

  • 示例 1:x = 123 → 返回 321
  • 示例 2:x = -123 → 返回 -321

注意:反轉後超出 32 位有符號整數範圍 [-2^31, 2^31-1] 返回 0。

解法一:字符串反轉法 (易理解)

public class Solution {
    public int reverse(int n) {
        long sum = 0;
        int flag = 1;
        if (n < 0) {
            flag = -1;
            n = -n; // 注意:n = Integer.MIN_VALUE 時 -n 會溢出,但題目輸入範圍內不會出現
        }
        try {
            String s = Integer.toString(n);
            s = new StringBuffer(s).reverse().toString();
            sum = Long.parseLong(s) * flag;
        } catch (NumberFormatException e) {
            return 0; // 溢出捕獲
        }
        return (int) sum;
    }
}

解法二:數學取模法 (效率更高、無額外空間)

public class Solution {
    public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            // 溢出檢查
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE/10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE/10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
}

核心點總結

維度字符串法數學法
時間複雜度O(log₁₀n)O(log₁₀n)
空間複雜度O(log₁₀n) (字符串)O(1)
溢出處理try-catch 捕獲預判邊界
推薦場景面試快速寫出生產環境、性能敏感
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved