Leetcode每日打卡20201001-----迴文數

qq_1431051696發表於2020-10-01

9.迴文數

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

示例 1:

輸入: 121
輸出: true
示例 2:

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

輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。
  • 進階:
你能不將整數轉為字串來解決這個問題嗎?
  • 思路一:轉為字串解決,雙指標,互相遍歷,不等直接返回false,否則為true
class Solution {
    public boolean isPalindrome(int x) {
    	//轉字串
        String s = String.valueOf(x);
        int left = 0;
        int right = s.length() - 1;
        while(left < right){
        	//不等為false
            if(s.charAt(left) != s.charAt(right)){
                return false;
            }
            left++;
            right--;
        }

        return true;
    }
}
  • 思路二:不轉字串,將x複製一份,然後對x進行反向的求這個數
class Solution {
    public boolean isPalindrome(int x) {
        //邊界處理,這裡x==0要先寫
        if(x == 0){
            return true;
        }
        if(x < 0 || x % 10 == 0){
            return false;
        }
        //複製一份,方便之後的對比
        int num = x;
        int temp = 0;
        while(x > 0){
            //求這個數的倒過來之後的數
            temp = temp * 10 + x % 10;
            x /= 10;
        }
        //相等則為迴文數
        return temp == num;
    }
}

相關文章