在确定字符串是否是另一个字符串的子序列时,我有以下代码:
def subseq(strA, strB):
if not strA:
return True
else:
for char in strB:
if strA:
strA = strA[char == strA[0]:]
return strA == ""
>>> subseq('cat', 'XIKSLPWswifmscakst')
True
>>> subseq('cat', 'XIKSLPWswifmsctksa')
False
虽然这很好,有没有办法递归地解决这个问题?
答案 0 :(得分:1)
迭代版本通常在Python上运行得更好,因为它没有尾调用优化,而且函数调用很重。但作为练习,这是我的解决方案。
def subseq(needle, haystack):
if not needle: return True
if len(needle) > len(haystack): return False
if needle[0] == haystack[0]:
return subseq(needle[1:], haystack[1:])
else:
return subseq(needle, haystack[1:])
但请勿使用此功能!
len(s) > sys.getrecursionlimit()
)上的堆栈溢出。