สมมติว่าเรามีค่าไม่เป็นลบ n เราต้องหาความยาวของ 1s ที่ต่อเนื่องกันยาวนานที่สุดในการแทนค่าไบนารี
ดังนั้น หากอินพุตมีค่าเท่ากับ n =1469 ผลลัพธ์จะเป็น 4 เนื่องจากการแทนค่าไบนารีของ 156 คือ "10110111101" ดังนั้นจึงมี 1 วินาทีติดต่อกัน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- นับ :=0
- ในขณะที่ n ไม่เหมือนกับ 0, do
- n :=n AND (n หลังจากเลื่อนไปทางซ้ายหนึ่งบิต)
- นับ :=นับ + 1
- จำนวนคืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(n): count = 0 while n != 0: n = n & (n << 1) count = count + 1 return count n = 1469 print(solve(n))
อินพุต
1469
ผลลัพธ์
4