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 k liên tiếp c nằm trong s, thì
- 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