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

    回到顶部