[Leetcode-09] 9. Palindrome Number

題目要求

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。
連接:https://leetcode-cn.com/probl...java

示例

Input: 121 Output: true

Input: -121 Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.ui

Input: 10 Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.spa

題解思路

1.比較直觀想到的就是轉換成字符串作反轉操做。
2.題設建議是不要用轉換字符串的方式去作,那麼我想到的思路是先考慮一些邊界狀況,好比說:code

  • 這個數是負數的狀況

去掉一些邊界狀況,將指望將整個數進行反轉,若是反轉後的數字和原始數字相同,那麼這個數字就是迴文。例如,輸入 1221,咱們能夠將數字 1221,整個反轉爲1221,並對兩個數字進行比較,若是相同的話,就是迴文。blog

這個逆轉的操做,對於數字1221,能夠首先執行1221%10的操做獲得1,而後要獲得倒數第二個數字,能夠將1221除以10,再求餘數獲得,同時將最後一位數字乘以10再加上倒數第二位的數字,那麼就是1*10+2 = 12,就獲得了想要的結果,以此類推,就獲得了逆轉後的數字了。leetcode

首先是前面第一和第二種的解法rem

java版本字符串

// 直接字符串反轉求解
class Solution {
    public boolean isPalindrome(int x) {
        String result = new StringBuilder(x + "").reverse().toString();
        return result.equals(String.valueOf(x));

    }
}

file

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 ) {
            return false;
        }
        int originX = x;
        int reverseNum = 0;
        while(x != 0) {
            reverseNum = reverseNum * 10 + x %10;
            x = x/ 10;
        }

        return originX == reverseNum;
    }
}

file

官方還給了一種題解
官方給的題解是隻須要求一半的數字便可,好比說1221,那麼求到下半部分12,發現和上半部分12相等,便可退出,好比說12321,那麼求到下半部分123,發現比12打,那麼就退出,若是是非迴文,那麼只要下半部數比上半部數打時便可退出循環。get

不過我感受官方給的題解,不是很好理解,可是他這邊考慮了可能徹底逆轉會有溢出的問題,從時間效率上來講和第二種差異不大。it

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 ) {
            return false;
        }

        if (x % 10 ==0 && x!=0) {
            return false;
        }

        int reverseNum = 0;
        while(x > reverseNum) {
            reverseNum = reverseNum * 10 + x %10;
            x = x/ 10;
        }

        return x == reverseNum || x == reverseNum/10;
    }
}

file

相關文章
相關標籤/搜索