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

Chương trình tìm chuỗi sau khi xóa k ký tự trùng lặp liên tiếp trong python

Giả sử chúng ta có một chuỗi s và một giá trị k khác, chúng ta xóa liên tục k ký tự trùng lặp liên tiếp sớm nhất và trả về chuỗi cuối cùng.

Vì vậy, nếu đầu vào là s =​​"paaappmmmma" k =3, thì đầu ra sẽ là "ma", như khi chúng ta xóa ba "a" s để có "pppmmmma". Sau đó, chúng tôi xóa ba "p" s để có được "mmmma". Sau đó, xóa ba trong bốn chữ "m" để lấy "ma".

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

  • thực hiện vô hạn các bước sau, thực hiện
    • số lượng:=0
    • chars:=lấy các ký tự duy nhất từ ​​s
    • đối với mỗi ký tự c trong ký tự, hãy thực hiện
      • nếu k liên tiếp c nằm trong s, thì
        • xóa k c liên tiếp khỏi s
        • count:=count + 1
    • nếu số đếm giống 0, thì
      • ra khỏi vòng lặp
  • trả lại

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

Ví dụ

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