假设我们有一个字符串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