假设我们有两个字符串s,t和另一个字符串r,我们必须检查是否有通过按s和t的顺序合并字符来获取r的方法。
因此,如果输入像s =“ xyz” t =“ mno” r =“ xymnoz”,则输出将为True,因为xymnoz可以通过交织xyz和mno来形成。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能solve()。这将花费s,t,r
如果s,t和r为空,则
如果r为空,则
返回False
返回True
如果s为空,则
当t与r相同时返回true,否则返回false
如果不是t不为零,则
return s与r相同
如果s [0]与r [0]相同,则
返回True
如果solve(s [从索引1到结束],t,r [从索引1到结束])为真,则
如果t [0]与r [0]相同,则
返回True
如果solve(s,t [从索引1到结束],r [从索引1到结束])为真,则
返回False
让我们看下面的实现以更好地理解-
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))
"xyz", "mno", "xymnoz"输出结果
True