Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình thực hiện nén chuỗi bằng Python

Giả sử chúng ta có một chuỗi s. Chúng ta phải nén chuỗi này thành dạng mã hóa độ dài Run. Vì vậy, khi một ký tự được lặp lại k số lần liên tiếp như 'bbbb' ở đây ký tự 'b' được lặp lại bốn lần liên tiếp, do đó, dạng mã hóa sẽ là 'b4'. Đối với các ký tự đơn lẻ, chúng tôi sẽ không thêm số vào đó.

Vì vậy, nếu đầu vào là s =​​"abbbaaaaaaccdaaab", thì đầu ra sẽ là ab3a6c2da3b

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • res:=chuỗi trống
  • cnt:=1
  • đối với tôi trong phạm vi từ 1 đến kích thước của s-1, hãy thực hiện
    • nếu s [i - 1] giống với s [i] thì
      • cnt:=cnt + 1
    • nếu không,
      • res:=res nối s [i - 1]
      • nếu cnt> 1, thì
        • res:=res nối cnt
      • cnt:=1
  • res:=res + ký tự cuối cùng của s
  • nếu cnt> 1, thì
    • res:=res nối cnt
  • trả lại res

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

"abbbaaaaaaccdaaab"

Đầu ra

ab3a6c2da3b