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

ตรวจสอบว่าการเข้ารหัสแทนสตริงไบนารีที่ไม่ซ้ำกันหรือไม่ใน Python

ภาพรวม

บทความนี้อธิบายวิธีตรวจสอบว่า "การเข้ารหัส" (encoding) ที่กำหนด สามารถระบุสตริงไบนารีที่มีความยาว k ได้อย่างเดียว (uniquely) หรือไม่ การเข้ารหัสเก็บจำนวนของ 1 ที่ติดกัน (contiguous 1s) ซึ่งคั่นด้วย 0 เดียว

ตัวอย่าง

encoding = [4, 2, 3] หมายถึง สตริงไบนารี: 1111 0 11 0 111 = 11110110111 (ความยาว 11)

เงื่อนไขความเป็นเอกลักษณ์

การเข้ารหัสระบุสตริงได้อย่างเดียว ก็ต่อเมื่อ ผลรวมของจำนวน 1 ทั้งหมด + (จำนวนกลุ่ม - 1) เท่ากับความยาว k ที่กำหนด

สูตร: sum(nums) + len(nums) - 1 == k

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

def solve(nums, k):
    total = sum(nums)
    total += len(nums) - 1
    return total == k

nums = [4, 2, 3]
k = 11
print(solve(nums, k))  # True

ผลลัพธ์

True

คำอธิบายเพิ่มเติม

หากผลรวมไม่เท่ากับ k แสดงว่าการเข้ารหัสไม่สอดคล้องกับความยาวที่กำหนด อาจมีช่องว่างหรือ 0 เพิ่มเติม ทำให้ไม่สามารถระบุสตริงได้อย่างเดียว