Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình xóa k ký tự trùng lặp liên tiếp sớm nhất trong chuỗi bằng Python


Cho chuỗi s và số k. Lặp lại: xóa sớm nhất k ký tự liên tiếp giống nhau, cho đến khi không còn. Trả về chuỗi cuối cùng.

Ví dụ: s="paaappmmmma", k=3 → "ma" (xóa aaa, ppp, mmm).

Giải thuật

  • Lặp vô hạn:
    • Đếm count số lần xóa trong vòng lặp.
    • Với mỗi ký tự duy nhất trong s: nếu c*k xuất hiện trong s → thay thế bằng rỗng, tăng count.
    • Nếu count == 0 → thoát.
  • Trả về s.

Ví dụ minh họa

class Solution:
    def solve(self, s, k):
        while True:
            count = 0
            chars = set(s)
            for c in chars:
                if c * k in s:
                    s = s.replace(c * k, "")
                    count += 1
            if count == 0:
                break
        return s

ob = Solution()
s = "paaappmmmma"
k = 3
print(ob.solve(s, k))

Đầu vào

"paaappmmmma", 3

Đầu ra

ma