1. 程式人生 > >Leetcode(3)迴文數

Leetcode(3)迴文數

題目 判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。 示例 3: 輸入: 10 輸出: false 解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。

解題思路 第一種最簡單的就是根據上回做的翻轉整數,然後判斷是否與原始資料相等既可以判斷其是否為迴文: 程式碼如下

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

第二種的話依次判斷數字的首位與末尾位時候相同,然後向下輪換,直到最中間一個或者最中間兩個;

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0) return false;
        int div=1;
        while(x/div>=10)
        {
            div*=10;
        }
        while(x!=0)
        {
            int l=x/div;
            int r=x%10;
            if(l!=r) return false;
            x=(x%div)/10;
            div/=100;
        }
    return true;
    }
};