python教程—查找两个字符串之间的公共子字符串-Python实用宝典

python教程—查找两个字符串之间的公共子字符串

我想比较两个字符串并保持匹配,在比较失败的地方分开。如果我有两个字符串

我想比较两个字符串并保持匹配,在比较失败的地方分开。

如果我有两个字符串

    string1 = apples string2 = appleses answer = apples

另一个例子,因为字符串可以有多个单词。

    string1 = apple pie available string2 = apple pies answer = apple pie

我确信有一种简单的Python方法可以做到这一点,但是我不能算出来,任何帮助和解释都非常感谢。

回答

它被称为最长公共子串问题。在这里,我提出了一个简单、易于理解但效率低下的解决方案。由于该算法的复杂度为O(N²),对于大字符串,需要很长时间才能产生正确的输出。

    def longestSubstringFinder(string1, string2): answer = "" len1, len2 = len(string1), len(string2) for i in range(len1): match = "" for j in range(len2): if (i + j < len1 and string1[i + j] == string2[j]): match += string2[j] else: if (len(match) > len(answer)): answer = match match = "" return answer print longestSubstringFinder("apple pie available", "apple pies") print longestSubstringFinder("apples", "appleses") print longestSubstringFinder("bapples", "cappleses")

<强>输出< /强>

    apple pie apples apples

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论