Giả sử chúng ta có hai chuỗi s và t. Có thể xóa t khỏi s bao nhiêu lần tùy ý, và t chỉ xuất hiện một lần tại một thời điểm. Cần kiểm tra xem s có thể trở thành rỗng bằng cách xóa t nhiều lần hay không.
Ví dụ, s = "pipipinnn", t = "pin", đầu ra True vì: xóa "pin" từ "pipipinnn" -> "pipinn", xóa tiếp -> "pin", xóa tiếp -> rỗng.
Các bước giải quyết:
- Trong khi độ dài s > 0:
- position := vị trí đầu tiên của t trong s.
- Nếu position == -1 (không tìm thấy), thoát vòng lặp.
- s := xóa t khỏi s một lần (replace 1 lần).
- Trả về True nếu độ dài s == 0, ngược lại False.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(s, t):
while len(s) > 0:
position = s.find(t)
if position == -1:
break
s = s.replace(t, "", 1)
return len(s) == 0
s = "pipipinnn"
t = "pin"
print(solve(s, t))
Đầu vào
"pipipinnn", "pin"
Đầu ra
True