天天看點

9. 回文數 -力扣(leetCode)c++解法

  1. 回文數

    給你一個整數 x ,如果 x 是一個回文整數,傳回 true ;否則,傳回 false 。

回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。例如,121 是回文,而 123 不是。

示例 1:

輸入:x = 121

輸出:true

示例 2:

輸入:x = -121

輸出:false

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

示例 3:

輸入:x = 10

輸出:false

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

示例 4:

輸入:x = -101

輸出:false

提示:

-2^31 <= x <= 2^31 - 1

分析:

回文數的判斷可以用兩種方法

1.建立一個整數,将它變成需要驗證的整數的倒序,再驗證該數與原數是否相等。

2.将該整數變為一個字元串,然後用首末雙指針對該字元串進行周遊。

方法1代碼如下:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0)return false;
        else if(x==0)return true;
        else
        {
            long sum=0;
            int x2=x;
            while(x2)
            {
                sum=sum*10+x2%10;
                x2/=10;
            }
            if(x==sum)return true;
            else
                return false;
        }
    }
};
           

方法2代碼如下:

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0)return false;
        else if(x==0)return true;
        else
        {
            string str="";
            while(x)
            {
                str+=x%10;
                x/=10;
            }
            int left=0,right=str.size()-1;
            while(left<=right)
            {
                if(str[left]!=str[right])
                    return false;

                left++;
                right--;
            }
            return true;
        }
    }
};
           

覺得該篇文章有用的請不要忘記忘記點選右下角的大拇指~

歡迎大家關注我的公衆号:Smooth前端成長記錄

公衆号同步更新CSDN部落格内容,想友善閱讀部落格的C友可以來關注我的公衆号以便獲得更優良的閱讀體驗~

9. 回文數 -力扣(leetCode)c++解法