在Python中编写程序以检查最终字符串是否可以使用其他两个字符串组成
假设我们有两个字符串s,t,还有另一个字符串r,我们必须检查是否有任何方法可以通过按顺序合并从s和t中的字符来获取r。
因此,如果输入类似于s=”xyz” t=”mno” r=”xymnoz”,则输出将为True,因为通过交错xyz和mno可以形成xymnoz。
为了解决这个问题,我们将按照以下步骤进行−
- 定义函数solve()。这将采取s,t,r
-
如果s,t和r为空,则
- 返回真
- 如果r为空,则
-
返回假
- 返回真
-
如果s为空,则
- 当t与r相同时返回真,否则返回假
- 如果t不是零,则
- 返回s与r相同
- 如果s [0]与r [0]相同,则
- 如果solve(s[from index 1 to end], t, r[from index 1 to end])为真,则
- 返回真
- 如果solve(s[from index 1 to end], t, r[from index 1 to end])为真,则
- 如果t [0]与r [0]相同,则
- 如果solve(s,t[from index 1 to end],r[from index 1 to end])为真,则
- 返回真
- 如果solve(s,t[from index 1 to end],r[from index 1 to end])为真,则
- 返回假
让我们看一下以下实现以获得更好的理解−
示例
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