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

โปรแกรมเข้ารหัสสตริงแบบปกติเป็นรูปแบบ Run-Length ใน Python

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

ตัวอย่าง

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

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

  1. res := สตริงว่าง
  2. tmp := ตัวอักษรแรกของ s
  3. count := 1
  4. ลูป i จาก 1 ถึงขนาดของ s:
    • ถ้า s[i] ไม่เท่ากับ tmp:
      • res := res ต่อ count ต่อ tmp
      • tmp := s[i]
      • count := 1
    • อื่นๆ:
      • count := count + 1
  5. คืนค่า res ต่อ 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