【发布时间】:2014-06-29 16:56:11
【问题描述】:
我希望递归地找到 2 个给定字符串的最长公共子字符串。我已经编写了这段代码,但效率太低了。有没有办法我可以在 O(m*n) 中做到这一点,这里 m 和 n 分别是字符串。这是我的代码:
def lcs(x,y):
if len(x)==0 or len(y)==0:
return " "
if x[0]==y[0]:
return x[0] + lcs(x[1:],y[1:])
t1 = lcs(x[1:],y)
t2 = lcs(x,y[1:])
if len(t1)>len(t2):
return t1
else:
return t2
x = str(input('enter string1:'))
y = str(input('enter string2:'))
print(lcs(x,y))
【问题讨论】:
-
“效率太低”是什么意思?时间会不会太长?占用太多内存?如果可行,请考虑codereview.stackexchange.com
-
对于大长度的字符串来说太耗时了。
-
也不对。
-
它工作正常。只有时间复杂度高。
标签: python recursion substring