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

โปรแกรมเข้ารหัสสตริงในรูปแบบปกติเป็นรูปแบบความยาวรันใน Python


สมมติว่าเรามีสตริง s เราต้องเข้ารหัสสิ่งนี้โดยใช้เทคนิคการเข้ารหัสแบบรัน-ยาว อย่างที่เราทราบกันดีว่าการเข้ารหัสแบบรัน-ยาวเป็นวิธีที่ง่ายและรวดเร็วในการเข้ารหัสสตริง แนวคิดมีดังนี้ - องค์ประกอบต่อเนื่อง (อักขระ) ซ้ำ ๆ เป็นการนับและอักขระเดียว

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

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

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

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

ตัวอย่าง

class Solution:
   def solve(self, s):
      res = ""
      tmp = s[0]
      count = 1
      for i in range(1,len(s)):
         if s[i] != tmp:
            res += str(count) + tmp
            tmp = s[i]
            count = 1
         else:
            count += 1
      return res + str(count) + tmp
ob = Solution() print(ob.solve("BBBBAAADDCBB"))

อินพุต

"BBBBAAADDCBB"

ผลลัพธ์

4B3A2D1C2B