สมมติว่าเรามีอักขระพิเศษสองตัว อักขระตัวแรกสามารถแสดงด้วย 0 บิตหนึ่งตัว และอักขระตัวที่สองสามารถแสดงด้วยสองบิต เช่น (10 หรือ 11) ดังนั้น ถ้าเรามีสตริงที่แสดงด้วยหลายบิต เราต้องตรวจสอบว่าอักขระตัวสุดท้ายต้องเป็นอักขระหนึ่งบิตหรือไม่ สตริงที่กำหนดจะลงท้ายด้วยศูนย์เสมอ
ดังนั้น หากอินพุตเป็น [1,0,0] เอาต์พุตจะเป็น True เนื่องจากวิธีเดียวที่จะถอดรหัสคืออักขระสองบิต (10) และอักขระหนึ่งบิต (0) ดังนั้น อักขระตัวสุดท้ายคืออักขระหนึ่งบิต
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ในขณะที่ขนาดของบิต> 1 ทำ
- current :=องค์ประกอบแรกของบิต จากนั้นลบองค์ประกอบแรกออกจากบิต
- ถ้ากระแสเท่ากับ 1 แล้ว
- ลบองค์ประกอบแรกออกจากบิต
- ถ้าขนาดของบิตเท่ากับ 0 แล้ว
- คืนค่าเท็จ
- คืนค่า จริง เมื่อ bits[0] เท่ากับ 0 มิฉะนั้น เท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def isOneBitCharacter(self, bits): while len(bits) > 1: current = bits.pop(0) if current == 1: bits.pop(0) if len(bits) == 0: return False return bits[0] == 0 ob = Solution() print(ob.isOneBitCharacter([1,0,0]))
อินพุต
[1,0,0]
ผลลัพธ์
True