查找字符串最大回文子串的最快方法

时间:2021-01-24 11:41:07

标签: python algorithm

我正在使用 Python 查找给定字符串的最大回文子字符串

例如,如果我们的字符串是 'ABCBCD',程序应该打印 3

如果输出是 'ABC' 它只打印 0

我编写了一个我认为完美运行的代码。

但我想知道它是否优化得很好。

这是我的代码:

def IsPalindrom(s):
    for i in range(0,len(s)):
        if s[i]!=s[len(s)-i-1]:
            return False
    return True

s=input("Enter a string:")
n=len(s)
maximum=0
for i in range(0,n):
    for j in range(i,n):
        t=s[i:j+1]
        m=len(t)
        if (IsPalindrom(t) and m>maximum):
            maximum=m
if maximum==1:
    maximum=0
print(maximum)

我还打算添加条件

if maximum>m:
    continue

但是不知道好不好

在给出解决方案时请考虑时间和内存复杂度。

提前致谢。

1 个答案:

答案 0 :(得分:3)

效率最高?不,您的解决方案接近 O(n^3)。解决这个问题的最有效方法是使用 Manacher 算法来解决 O(n),详情请见:https://en.wikipedia.org/wiki/Longest_palindromic_substring#Manacher's_algorithm