Giả sử chúng ta có một chuỗi S gồm các chữ cái thường; một hoạt động loại bỏ trùng lặp sẽ được thực hiện. Điều này sẽ được thực hiện bằng cách chọn hai chữ cái liền kề và bằng nhau và xóa chúng.
Chúng tôi sẽ liên tục xóa các bản sao khỏi S cho đến khi không còn bản sao nào.
Trả lại chuỗi sau khi tất cả các quá trình xóa trùng lặp như vậy đã được hoàn thành. Đảm bảo rằng câu trả lời là duy nhất.
Giả sử chuỗi là “abbacaca”, thì câu trả lời sẽ là “caca”. Lúc đầu xóa các bản sao bb, sau đó chuỗi là “aacaca”, sau đó xóa aa, sau đó chuỗi là “caca”, sau đó không có bản sao nào như vậy.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Xác định một mảng st và khởi tạo i:=0
- while i <độ dài của chuỗi -
- nếu st có một số phần tử và phần tử cuối cùng của st =st [i], thì hãy tăng i lên 1 và xóa phần tử cuối cùng khỏi st
- nếu không thì thêm chuỗi [i] vào st, tăng i lên 1
- cuối cùng nối tất cả các phần tử trong st dưới dạng một chuỗi và trả về
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
class Solution(object): def removeDuplicates(self, S): st = [] i = 0 while i < len(S): if len(st)!=0 and st[-1]==S[i]: i+=1 st.pop(-1) else: st.append(S[i]) i+=1 return "".join(i for i in st) ob1 = Solution() print(ob1.removeDuplicates("abbacaca"))
Đầu vào
"abbacaca"
Đầu ra
"caca"