Python 使用递归查找子序列
我需要一个程序返回Python 使用递归查找子序列,python,recursion,Python,Recursion,我需要一个程序返回True,如果一个字符串(s2)只能通过从s2中删除字符而转换为另一个字符串(s1)。例如,如果s1=star和s2=swewtffsafefr它将返回True 到目前为止,我已经想到了这一点: def subsequence(s1, s2, pos=0): if pos < len(s1): subsequence(s1,s2, pos+1) else: return 0 def子序列(s1、s2、pos=0): 如果位
True
,如果一个字符串(s2
)只能通过从s2
中删除字符而转换为另一个字符串(s1
)。例如,如果s1=star
和s2=swewtffsafefr
它将返回True
到目前为止,我已经想到了这一点:
def subsequence(s1, s2, pos=0):
if pos < len(s1):
subsequence(s1,s2, pos+1)
else:
return 0
def子序列(s1、s2、pos=0):
如果位置<长度(s1):
子序列(s1、s2、位置+1)
其他:
返回0
我不知道如何让它删除
s2
中不在s1
中的字符要删除s2中不在s1中的字符并不难,有很多方法
set_s1 = set([item for item in s1])
set_s2 = set([item for item in s2])
这将获得s1和s2中的唯一字符
现在确定s2中的值,而不是s1中的值
diff = set_s2.difference(set_s1)
if len(diff) == 0:
break
else:
new_s2 = ''
for c in s2:
if c not in diff:
new_s2 = new_s2 + c
现在删除差异中s2中的字符(s2中的字符不在s1中的字符)
您仍然存在的问题是删除重复项要删除s2中不在s1中的字符并不难,有很多方法
set_s1 = set([item for item in s1])
set_s2 = set([item for item in s2])
这将获得s1和s2中的唯一字符
现在确定s2中的值,而不是s1中的值
diff = set_s2.difference(set_s1)
if len(diff) == 0:
break
else:
new_s2 = ''
for c in s2:
if c not in diff:
new_s2 = new_s2 + c
现在删除差异中s2中的字符(s2中的字符不在s1中的字符)
您仍然存在的问题是删除重复项,这样您就知道您需要一个递归函数
subseq(s1,s2)
首先,你需要拿出你的基本情况
如果s2中的s1:返回True
如果不是s1:返回True
如果不是s2:返回False
#其他一切
所以你知道你想要一个递归函数
subseq(s1,s2)
首先,你需要拿出你的基本情况
如果s2中的s1:返回True
如果不是s1:返回True
如果不是s2:返回False
#其他一切
你在用这个代码做什么。。。你能用英语解释一下你想完成什么吗?(一步一步)这里的代码是我得到的,我想给函数提供两个参数,
s1
和s2
,它们都是字符串。我想使用递归遍历s2
中的每个位置字符,如果s2
可以等于s1
我从中删除了0个或更多字符,则返回True
。这里我对一个简单的问题给出了非常彻底的答案。。。希望您可以在测试中使用此代码做什么。。。你能用英语解释一下你想完成什么吗?(一步一步)这里的代码是我得到的,我想给函数提供两个参数,s1
和s2
,它们都是字符串。我想使用递归遍历s2
中的每个位置字符,如果s2
可以等于s1
我从中删除了0个或更多字符,则返回True
。这里我对一个简单的问题给出了非常彻底的答案。。。希望你能在考试中做到