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));
}
};