Leetcode 9. Palindrome Number

Palindrome Number

Palindrome Number :

Palindrome Number:判斷一個整數是否為回文,回文的意思是從左到右和右到左都是一樣的

  • 建立個初始值num為 0 ,儲存回文後的數值
  • 每次都將輸入值 x 的個位數取出(% 10 ),然後將數值整除 10(個位數不見
  • 每次迴圈執行過程中,都先將回文值乘十,在加上 x 的個位數
  • 在 x 值最後一位取完後,即離開迴圈,比較原本的 x 值與回文值是否相同

Python :

class Solution(object):
    def isPalindrome(self, x):
        num=0
        a=abs(x)
       
        while(a!=0):
            num=num*10+a%10       #回文值乘十,在加上 x 的個位數
            a=int(a/10)           #數值整除 10(個位數不見)
        if x>=0 and x==num:       # x 值與回文值是否相同
            return True
        else:
            return False           

Python 強大的特性!

class Solution:
    def isPalindrome(self, x):
        result = str(x)[::-1];     #回文
        if(str(x) == result):
            return True
        else: 
            return False;

C++

  • 首先判斷數值是否為負值,若為負值則回傳 false負數一定不回文)
  • 建立個初始值為 0 的變數,用來儲存回文後的數值
  • 建立迴圈,每次都將輸入值 x 的個位數取出(% 10 即是),然後將數值整除 10(等於個位數不見了
  • 每次迴圈執行過程中,都先將回文值乘十,在加上 x 的個位數
  • 在 x 值最後一位取完後,即離開迴圈,比較原本的 x 值與回文值是否相同
class Solution {
public:
    bool isPalindrome(int x) {
        // Preventation
        if (x < 0) return false;

        // Init
        long int x_reverse = 0;
        int x_origin = x;
        
        // Calculate reverse value
        while (x) {
            x_reverse = x_reverse*10 + x%10;
            x /= 10;
        }
        
        return x_origin == x_reverse;
    }
};

C++ 特殊解法

c.rbegin() 返回一個逆序迭代器,它指向容器c的最後一個元素

c.rend() 返回一個逆序迭代器,它指向容器c的第一個元素前面的位置

class Solution {
public:
  bool isPalindrome(int x) {
    string s = to_string(x);    
    return s == string(rbegin(s), rend(s));
  }
};