Python中判斷八進位制數是否為迴文數


假設我們有一個數字,它可能是八進位制或十進位制形式。如果是八進位制形式,則檢查它是否為迴文數。如果是十進位制數,則將其轉換為八進位制,然後檢查它是否為迴文數。

因此,如果輸入類似於 num = 178,則輸出將為 True,因為該數字不是八進位制形式(8 在八進位制中不是有效符號,但在十進位制中有效),然後將其轉換為八進位制,結果為 262,這是一個迴文數。

為了解決這個問題,我們將遵循以下步驟:

  • 如果num的所有數字都小於8,則base := 8,否則base := 10
  • oct_list := 一個新的列表
  • 當num不為0時,執行:
    • 將 (num mod base) 插入oct_list的末尾
    • num := (num / base) 的商
  • j := oct_list的大小 - 1
  • k := 0
  • 當 k <= j 時,執行:
    • 如果 oct_list[j] 與 oct_list[k] 不相同,則
      • 返回 False
    • j := j - 1, k := k + 1
  • 返回 True

示例

讓我們看看下面的實現來更好地理解:

線上演示

def is_all_under_8(num):
   while num:
      if (num % 10) >= 8:
         return False
      else:
         num = int(num / 10)
      return True
def solve(num):
   base = 8 if(is_all_under_8(num) == False) else 10
   oct_list = []
   while num != 0:
      oct_list.append(num % base)
      num = int(num / base)
   j = len(oct_list)-1
   k = 0
   while k <= j:
      if oct_list[j] != oct_list[k]:
         return False
      j-=1
      k+=1
   return True
num = 178
print(solve(num))

輸入

178

輸出

True

更新於:2021年1月19日

476 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告