如何记忆以加快运行速度?

时间:2019-05-17 01:22:16

标签: python caching dynamic memoization

试图找到两个字符串的最长公共序列。我的代码可以正常工作,并且可以提供正确的解决方案,但是需要花费很长时间。

我知道我必须使用记忆来跟踪结果,但是我对如何在此特定问题中使用它感到困惑。注意:我不允许使用任何循环。这是我的代码

def longest_common_substring(s1, s2):
    """ finds the longest common substring of two strings """
    final = ''
    if s1[0] == s2[0]:
        final += (s1[0])
        if len(s1) > 1 and len(s2) > 1:         
            final += (longest_common_substring(s1[1:], s2[1:]))
    else:
        if len(s1) > 1 and len(s2) > 1: 
            left = longest_common_substring(s1[1:], s2)
            right = longest_common_substring(s1, s2[1:])
            if len(left) > len(right):
                final += left
            else:
                final += right
        elif len(s1) == 1 and len(s2) > 1:
            final += longest_common_substring(s1, s2[1:])
        elif len(s2) == 1 and len(s1) > 1:
            final += longest_common_substring(s1[1:], s2)             
    return final

例如,两个字符串的代码“看着我,我会飞!”并且“看看那是一次苍蝇”应该返回“看一下,一次苍蝇”,它对我的​​代码有用,但是不够快。

0 个答案:

没有答案