在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的大小
- 对于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