天天看點

leetcode-9-回文數

title: leetcode-9-回文數

date: 2019-08-31 08:42:55

categories:

  • leetcode

    tags:

  • leetcode

回文數

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

    示例 1:

    輸入: 121

    輸出: true

    示例 2:

    輸入: -121

    輸出: false

    解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。是以它不是一個回文數。

    示例 3:

    輸入: 10

    輸出: false

    解釋: 從右向左讀, 為 01 。是以它不是一個回文數。

    進階:

    你能不将整數轉為字元串來解決這個問題嗎?

    來源:力扣(LeetCode)

    連結:https://leetcode-cn.com/problems/palindrome-number

    著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

  • 題解:首先判斷和0的大小關系,負數進行return,反之 把數字的每一位都取出來,看看能否傳回值等于原來的值
    class Solution {
        public boolean isPalindrome(int x) {
            int number = x;
            int sum = 0;
            int rest;
            if(x<0)
                return false;
            while(x!=0)
            {
                rest = x%10;
                sum = sum*10+rest;
                x=x/10;
            }
            return number==sum?true:false;
        }
    }
               
    leetcode-9-回文數
  • 第二種題解,對第一種題解進行優化,隻是反轉後半部分
public boolean isPalindrome(int x) {
        if(x<0||(x%10==0&&x!=0))
            return false;
        int midNumber = 0;
        while(x>midNumber)//判斷是否反轉了一半
        {
            midNumber = midNumber*10+x%10;
            x = x/10;
        }
        //有兩種最終情況12321反轉123,1221反轉12,是以需要判斷
        return x==midNumber||x==midNumber/10;
    }
           
leetcode-9-回文數

繼續閱讀