【发布时间】:2018-04-11 13:10:33
【问题描述】:
我尝试使用递归来解决它。这是我的代码。 “ABDA”失败(返回 3 而不是 1)。这样做的原因对我来说很清楚,但我不知道如何解决这个问题。
def lps(s):
print(s)
n = len(s)
if n <= 1:
return n
if s[0] == s[n-1]:
return 2 + lps(s[1:-1])
return max(lps(s[:-1]), lps(s[1:]))
【问题讨论】:
-
您能否提供一些更复杂的预期输出示例?我虽然你在寻找最长的前缀也是一个还原的前缀,但根据 MBo 的解释,你不是。你真的是在谈论找到最长的回文子序列(例如“acbabac”中的“ababa”、“cbabc”或“cabac”),最长的回文因子/子字符串(例如“acbabac”中的“bab”),还是我最初的解释正确吗?
-
请说明您的意思是回文子串(连续)还是子序列(在您的示例中为
ada或aba) -
3 是根据standard meaning of the word subsequence 的正确答案。如果你需要别的东西,你最好用不同的词来命名它(例如子字符串)。
标签: python algorithm computer-science