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}]。
因此,如果输入类似于“ antaprezatepzapreanta”,则输出将为11,因为我们可以像“(a)(nt)(a)(pre)(za)(tpe)(za)(pre)( a)(nt)(a)”。
为了解决这个问题,我们将遵循以下步骤-
开始:= 0,结束:=文本长度-1
用空字符串初始化temp1和temp2
当文本长度为奇数时,ans = 1,否则为0
在开始<结束时,执行-
将temp1和temp2设置为空字符串
回答:=回答+ 2
temp1:= temp1 +文字[开始]
temp2:=文本[结束] + temp2
如果temp1与temp2相同,则-
开始:=开始+ 1
结束:=结束-1
如果文本长度为偶数并且(temp1或temp2不为空)
ans:= ans + 1
返回ans
让我们看下面的实现以更好地理解-
示例
class Solution(object):def longestDecomposition(self, text):
start = 0
end = len(text)-1
temp1 = ""
temp2 = ""
ans = 1 if len(text) & 1 else 0
while start<end:
temp1+=text[start]
temp2 = text[end]+temp2
if temp1 == temp2:
temp1 = temp2 = ""
ans+=2
start+=1
end-=1
if len(text)%2 == 0 and(temp1 or temp2):
ans += 1
return ans
ob = Solution()
print(ob.longestDecomposition("antaprezatepzapreanta"))
输入项
"antaprezatepzapreanta"
输出结果
11
以上是 Python中最长的块回文分解 的全部内容, 来源链接: utcz.com/z/317162.html