【发布时间】:2014-04-17 22:24:09
【问题描述】:
我正在尝试编写一个递归代码,它接收 2 个字符串并返回 True 是它们有一个共同的字符,如果没有,则返回 False。 我首先编写了一个迭代代码,因为我认为它可能会有所帮助。 我遇到的问题是我不知道如何比较每个字符串中的所有字符。这是我到目前为止所做的: 迭代代码:
def any_char_present_it(s1,s2):
if len(s1)==0 or len(s2)==0:
return False
for i in s2:
for m in s1:
if i==m:
return True
return False
递归代码:
def any_char_present(s1,s2):
if len_rec(s2)==0:
return False
if s1[0]==s2[0]:
return True
return any_char_present(s1,s2[1:])
【问题讨论】:
-
如果这是为了家庭作业,或者是第一次专门学习编程,我不会给出我个人用于解决这个问题的确切代码。不过,我会给你一个提示:你可以只使用集合并检查交叉点。 编辑: 糟糕,我看到有人在我写这篇文章时已经提供了一个基于集合的答案。哦,好吧。
-
请记住,Python 语言在创建递归调用堆栈方面有很多开销,因此您会注意到您的迭代版本在输入较大时明显更快。如果在递归之前使用集合减少字符串肯定会更快,特别是如果您将自己限制为 ASCII 字符集。
标签: python python-3.x recursion