Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าการแทนค่าบิตเตอรี่ของตัวเลขเป็นพาลินโดรมหรือไม่ ใน Python


ปัญหา

ให้จำนวน n ตรวจสอบว่ารูปแบบไบนารีของมันเป็นพาลินโดรมหรือไม่

ตัวอย่าง

n = 9 → binary = 1001 → พาลินโดรม → True

แนวคิดการแก้ปัญหา

  1. กลับบิตของ n (reverse bits)
  2. เปรียบเทียบกับ n เดิม

โค้ดตัวอย่าง

def reverse_bits(n):
    rev = 0
    while n > 0:
        rev = (rev << 1) | (n & 1)
        n >>= 1
    return rev

def solve(n):
    return n == reverse_bits(n)

print(solve(9))   # True (1001)
print(solve(10))  # False (1010)

อินพุต / เอาต์พุต

Input:  9
Output: True