ปัญหา
ให้จำนวน n ตรวจสอบว่ารูปแบบไบนารีของมันเป็นพาลินโดรมหรือไม่
ตัวอย่าง
n = 9 → binary = 1001 → พาลินโดรม → True
แนวคิดการแก้ปัญหา
- กลับบิตของ n (reverse bits)
- เปรียบเทียบกับ 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