LeetCode 9. 迴文數

  題目:判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

示例 1:

輸入: 121
輸出: true

示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀,-121 。 從右向左讀,121- 。因此它不是一個迴文數。

示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀,01 。因此它不是一個迴文數。

進階:

你能不將整數轉爲字符串來解決這個問題嗎?
  1. 解法一:利用Java的reverse方法(效率非常低)
class Solution {
    public boolean isPalindrome(int x) {
    
        StringBuilder sb = new StringBuilder(String.valueOf(x));
        
        String string = sb.toString();
        
        StringBuilder reverse = sb.reverse();
        String string2 = reverse.toString();

        if (string.equals(string2)) {
            return true;
        }
        return false;
    }
}

  1. 解法二:不將其轉化爲字符串,依然利用整數進行解答
 public static boolean isPalindrome2(int x) {

        if (x < 0)
            return false;

        int pop = 0;
        int palind = 0;
        int temp = x;

        while (temp != 0) {

            // 取尾數
            pop = temp % 10;

            // 去尾數
            temp = temp / 10;

            // 迴文數溢出
            // @Native public static final int MIN_VALUE = 0x80000000;(源碼)
            if (temp > Integer.MAX_VALUE / 10 || temp == Integer.MAX_VALUE / 10 && pop > 7)
                return false;

            // @Native public static final int MAX_VALUE = 0x7fffffff;
            if (temp < Integer.MIN_VALUE / 10 || temp == Integer.MIN_VALUE / 10 && pop < -8)
                return false;

            palind = palind * 10 + pop;
        }
        return palind == x;
    }

兩種方案的差異

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章