Giả sử chúng ta có hai chuỗi s, t và một chuỗi r khác, chúng ta phải kiểm tra xem có cách nào để lấy r bằng cách hợp nhất các ký tự theo thứ tự từ s và t hay không.
Vì vậy, nếu đầu vào giống như s ="xyz" t ="mno" r ="xymnoz", thì đầu ra sẽ là True, vì xymnoz có thể được hình thành bằng cách xen kẽ xyz và mno.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Định nghĩa một hàm giải quyết (). Điều này sẽ mất s, t, r
-
nếu s, t và r trống thì
-
trả về True
-
nếu r trống thì
-
trả về Sai
-
-
-
-
nếu s trống, thì
-
trả về true khi t giống với r, ngược lại là false
-
-
nếu không t là khác 0, thì
-
return s giống với r
-
-
nếu s [0] giống với r [0] thì
-
nếu giải quyết (s [từ chỉ mục 1 đến cuối], t, r [từ chỉ mục 1 đến cuối]) là true, thì
-
trả về True
-
-
-
nếu t [0] giống với r [0] thì
-
nếu giải quyết (s, t [từ chỉ mục 1 đến cuối], r [từ chỉ mục 1 đến cuối]) là true, thì
-
trả về True
-
-
-
trả về Sai
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, t, r): if not s and not t and not r: return True if not r: return False if not s: return t == r if not t: return s == r if s[0] == r[0]: if self.solve(s[1:], t, r[1:]): return True if t[0] == r[0]: if self.solve(s, t[1:], r[1:]): return True return False ob = Solution() s = "xyz" t = "mno" r = "xymnoz" print(ob.solve(s, t, r))
Đầu vào
"xyz", "mno", "xymnoz"
Đầu ra
True