Giả sử chúng ta có một chuỗi s đại diện cho các ký tự được nhập vào một trình soạn thảo, ký hiệu "<-" biểu thị một dấu cách lùi, chúng ta phải tìm trạng thái hiện tại của trình soạn thảo.
Vì vậy, nếu đầu vào là s ="ilovepython <- <- ON", thì đầu ra sẽ là "ilovepythON", vì có hai ký tự xóa lùi sau "ilovepython", nó sẽ xóa hai ký tự cuối cùng, sau đó nhập lại "ON" .
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- res:=một danh sách mới
- đối với mỗi tôi trong s, thực hiện
- nếu tôi giống với '-' và ký tự cuối cùng của res giống với '<', thì
- xóa phần tử cuối cùng khỏi res
- nếu res không trống, thì
- xóa phần tử cuối cùng khỏi res
- nếu không,
- chèn tôi vào cuối res
- nếu tôi giống với '-' và ký tự cuối cùng của res giống với '<', thì
- kết hợp các phần tử có trong res và trả về
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): res = [] for i in s: if i == '-' and res[-1] == '< ': res.pop() if res: res.pop() else: res.append(i) return "".join(res) ob = Solution() print(ob.solve("ilovepython<-<-ON"))
Đầu vào
"ilovepython<-<-ON"
Đầu ra
ilovepython<-<-ON