Giả sử chúng ta có chuỗi s độ dài 2 và danh sách từ w, mọi từ trong w đều độ dài 2. Cần kiểm tra xem có thể nối các từ trong w sao cho chuỗi kết quả chứa s làm chuỗi con hay không.
Ví dụ, s = "no", w = ["ol", "on", "ni", "to"], đầu ra True vì có thể nối "on" + "ol" = "onol" chứa "no".
Các bước giải quyết:
- n := số từ trong w.
- char_0 := False, char_1 := False.
- Duyệt i từ 0 đến n-1:
- Nếu w[i] == s, trả về True.
- Nếu s[0] == w[i][1], char_0 = True.
- Nếu s[1] == w[i][0], char_1 = True.
- Nếu char_0 và char_1 đều True, trả về True.
- Trả về False.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(s, w):
n = len(w)
char_0 = False
char_1 = False
for i in range(n):
if w[i] == s:
return True
if s[0] == w[i][1]:
char_0 = True
if s[1] == w[i][0]:
char_1 = True
if char_0 and char_1:
return True
return False
s = "no"
w = ["ol", "on", "ni", "to"]
print(solve(s, w))
Đầu vào
"no", ["ol", "on", "ni", "to"]
Đầu ra
True