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


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

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

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

  • s2 := 将s连接两次

  • max_len := 0

  • 对于x从0到s的大小-1,执行:

    • 对于y从0到s的大小,执行:

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

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

        • max_len := temp的大小

  • 返回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

更新于:2020年12月15日

165 次浏览

开始你的职业生涯

完成课程后获得认证

开始
广告