Mô tả bài toán
Cho hai câu s và t chỉ chứa chữ cái tiếng Anh. Hai câu được gọi là tương tự nếu có thể chèn một câu tùy ý (có thể rỗng) vào một trong hai câu để chúng trở nên giống nhau.
Ví dụ
Nếu đầu vào là s = "we live at city Kolkata", t = "city Kolkata", thì đầu ra là True vì có thể thêm "we live at" vào t để được s.
Giải thuật
- Tách câu thành danh sách từ:
s1 = s.split(),s2 = t.split(). - Nếu
len(s1) > len(s2), hoán đổis1vàs2. - Trong khi
s1không rỗng:- Nếu từ đầu của
s1vàs2giống nhau: xóa từ đầu cả hai. - Ngược lại nếu từ cuối của
s1vàs2giống nhau: xóa từ cuối cả hai. - Ngược lại: trả về
False.
- Nếu từ đầu của
- Trả về
True.
Triển khai Python
def solve(s, t):
s1 = s.split()
s2 = t.split()
if len(s1) > len(s2):
s1, s2 = s2, s1
while s1:
if s2[0] == s1[0]:
s2.pop(0)
s1.pop(0)
elif s2[-1] == s1[-1]:
s2.pop()
s1.pop()
else:
return False
return True
s = "we live at city Kolkata"
t = "city Kolkata"
print(solve(s, t))
Đầu vào
"we live at city Kolkata", "city Kolkata"
Đầu ra
True