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

โปรแกรมทำการบีบอัดสตริงใน Python


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

ดังนั้น หากอินพุตเป็น s ="abbbaaaaaaccdaaab" ผลลัพธ์จะเป็น ab3a6c2da3b

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • res :=สตริงว่าง
  • cnt :=1
  • สำหรับ i ในช่วง 1 ถึงขนาด s - 1 ทำ
    • ถ้า s[i - 1] เหมือนกับ s[i] แล้ว
      • cnt :=cnt + 1
    • มิฉะนั้น
      • res :=res concatenate s[i - 1]
      • ถ้า cnt> 1 แล้ว
        • res :=res concatenate cnt
      • cnt :=1
  • res :=res + อักขระตัวสุดท้ายของ s
  • ถ้า cnt> 1 แล้ว
    • res :=res concatenate cnt
  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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