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

โปรแกรมบีบอัดสตริงแบบ Run-Length Encoding ใน Python

สมมติว่าเรามีสตริง s เราต้องบีบอัดสตริงนี้เป็นรูปแบบ Run-Length Encoding เมื่อตัวอักษรซ้ำกันติดต่อกัน k ครั้ง เช่น 'bbbb' ตัวอักษร 'b' ซ้ำ 4 ครั้งติดต่อกัน รูปแบบที่เข้ารหัสจะเป็น 'b4' สำหรับตัวอักษรเดี่ยวจะไม่เพิ่มตัวเลขจำนวน

ตัวอย่างเช่น หาก s = "abbbaaaaaaccdaaab" ผลลัพธ์จะเป็น ab3a6c2da3b

ขั้นตอนการแก้ปัญหา

  • res := สตริงว่าง
  • cnt := 1
  • for i ในช่วง 1 ถึง len(s) - 1:
    • ถ้า s[i-1] เท่ากับ s[i]: cnt := cnt + 1
    • มิฉะนั้น:
      • res := res + s[i-1]
      • ถ้า cnt > 1: res := res + str(cnt)
      • cnt := 1
  • res := res + ตัวอักษรสุดท้ายของ s
  • ถ้า cnt > 1: res := res + str(cnt)
  • คืนค่า res

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

def solve(s):
    res = ""
    cnt = 1
    for i in range(1, len(s)):
        if s[i-1] == s[i]:
            cnt += 1
        else:
            res = res + s[i-1]
            if cnt > 1:
                res += str(cnt)
            cnt = 1
    res = res + s[-1]
    if cnt > 1:
        res += str(cnt)
    return res

s = "abbbaaaaaaccdaaab"
print(solve(s))

อินพุต

"abbbaaaaaaccdaaab"

เอาต์พุต

ab3a6c2da3b