我正在使用 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
但是不知道好不好
在给出解决方案时请考虑时间和内存复杂度。
提前致谢。
答案 0 :(得分:3)
效率最高?不,您的解决方案接近 O(n^3)。解决这个问题的最有效方法是使用 Manacher 算法来解决 O(n),详情请见:https://en.wikipedia.org/wiki/Longest_palindromic_substring#Manacher's_algorithm。