Python編程題24--回文數


題目

現在給定一個整數 x ,請判斷 x 是否是回文數,如果 x 是一個回文整數,返回 True ;否則,返回 False 。

說明:回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

注意:這里不允許直接使用將整數轉換為字符串的方法。

例如:

給定一個整數:121,返回結果:True

給定一個整數:-121,返回結果:False

給定一個整數:123,返回結果:False

實現思路1

  • 通過 取模運算 ,每次把整數除以10,得到余數
  • 如果 整數x 小於0,或者被10整除,那么說明該整數 x 必然不是回文數
  • 設置數字反轉后的值為 reverse_x ,默認為 0 ;設置 tmp=x ,用於取模運算
  • 通過 while 循環,每次循環對 tmp 進行取模運算,結合余數求出每次循環后的倒序結果 reverse_x,最終判斷 reverse_x 與 x 是否相等
  • 上面做法是把所有數字都反轉,需要循環 n 次

例如給定整數 12321 ,按上面思路,得到初始值:reverse_x = 0,tmp = 12321,然后計算如下:

第 1 次循環: 求出個位上的數 12321 % 10 = 1
reverse_x = reverse_x * 10 + 1 = 1
tmp = tmp // 10 = 1232

第 2 次循環: 求出十位上的數 1232 % 10 = 2
reverse_x = reverse_x * 10 + 2 = 12
tmp = tmp // 10 = 123

第 3 次循環: 求出百位上的數 123 % 10 = 3
reverse_x = reverse_x * 10 + 3 = 123
tmp = tmp // 10 = 12

第 4 次循環: 求出千位上的數 12 % 10 = 2
reverse_x = reverse_x * 10 + 2 = 1232
tmp = tmp // 10 = 1

第 5 次循環: 求出萬位上的數 1 % 10 = 1
reverse_x = reverse_x * 10 + 1 = 12321
tmp = tmp // 10 = 0

代碼實現

def isPalindrome(x):
    if x < 0 or (x != 0 and x % 10 == 0):
        return False
    reverse_x, tmp = 0, x
    while tmp > 0:
        reverse_x = reverse_x * 10 + tmp % 10
        tmp = tmp // 10
    return reverse_x == x

實現思路2

  • 通過 取模運算 ,該實現是對上面的方法進行優化
  • 如果 整數x 小於0,或者被10整除,那么說明該整數 x 必然不是回文數
  • 設置數字反轉后的值為 reverse_x ,默認為 0
  • 通過 while 循環,每次循環對 x 進行取模運算, 結合余數求出每次循環后的倒序結果 reverse_x,當 x < reverse_x 時,結束循環
  • 最終判斷 reverse_x 與 x 是否相等,或者 reverse_x 整除10 后的值與 x 是否相等
  • 上面做法是僅把一半數字都反轉,需要循環 n / 2 次

例如 x=12321,那么循環結束后的最終結果為:reverse_x = 123,x = 12,此時判斷 reverse_x 整除10 后的值與 x 是否相等;

例如 x=123321,那么循環結束后的最終結果為:reverse_x = 123,x = 123,此時判斷 reverse_x 與 x 是否相等 。

代碼實現

def isPalindrome(x):
    if x < 0 or (x != 0 and x % 10 == 0):
        return False
    reverse_x = 0
    while x > reverse_x:
        reverse_x = reverse_x * 10 + x % 10
        x = x // 10
    return x == reverse_x or x == reverse_x // 10

更多Python編程題,等你來挑戰:Python編程題匯總(持續更新中……)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM