在 Python 中查找最长分块回文分解长度的程序
假设我们有一个文本。我们必须找到最大可能的k使得存在a[1],a[2],...,a[k]使得:每个a[i]都是一个非空字符串。并且它们的串联a[1]+a[2]+...+a[k]等于给定的文本;对于1到k范围内的所有i,a[i]=a[{k+1-i}]。
因此,如果输入类似于text="antaprezatepzapreanta",那么输出将是11,因为我们可以将其拆分为"a|nt|a|pre|za|tpe|za|pre|a|nt|a"。
示例
让我们看下面的实现来更好地理解
def solve(text):
counter = 0
i, j = 1, len(text) - 1
ic, jc = 0, len(text)
while i <= j:
if text[ic:i] == text[j:jc]:
counter += 2
ic = i
jc = j
i += 1
j -= 1
if ic != jc:
counter += 1
return counter
text = "antaprezatepzapreanta"
print(solve(text))输入
[3,4,5,2,1,7,3,4,7], 3输出结果
11
热门推荐
10 伴娘前夫结婚祝福语简短
11 妈妈横幅生日祝福语简短
12 圣诞祝福语简短贺卡英文
13 回复情侣祝福语大全简短
14 同事喜糖礼盒祝福语简短
15 自己祝福语简短唯美短句
16 妈妈求婚祝福语大全简短
17 虎年晋升祝福语大全简短
18 祝福语春节的来历简短