程序在Python中单次旋转后查找最长回文子串的长度

假设我们有一个字符串s,它可以在任意点旋转一次。我们必须找到通过执行此操作可以获得的最长回文子串的长度。

因此,如果输入类似于s =“ elklev”,则输出将为7,因为我们可以在“ el”和“ klev”之间旋转以获得“ levelk”。所以这里最长的回文子串长度是5。

为了解决这个问题,我们将遵循以下步骤-

  • s2:=两次连接s

  • max_len:= 0

  • 对于0到s − 1范围内的x,执行

    • temp:= s2 [从索引x到x + y]

    • 如果temp是回文,并且temp的大小> max_len,则

    • max_len:=临时大小

    • 对于y在0到s大小的范围内,执行

    • 返回max_len

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, s):
          s2 = 2 * s
          max_len = 0
          for x in range(len(s)):
             for y in range(len(s) + 1):
                temp = s2[x : x + y]
                if temp == temp[::−1] and len(temp) > max_len:
                   max_len = len(temp)
          return max_len
    ob = Solution()
    s = "elklev"
    print(ob.solve(s))

    输入值

    "elklev"
    输出结果
    5

    猜你喜欢