牛客华为HJ85最长回文子串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 不能用二分法,因为 4长度的窗口 有回文,不代表 3长度的窗口也能有回文,没有递进性。
def judge(nums): # 判断回文
l,r = 0,len(nums)-1
while l<=r and nums[l]==nums[r]:
l += 1
r -= 1
if l > r:
return True
return False

def check(nums,x): # 检查x长度 是否存在为回文。
for i in range(len(nums)-x+1): # i 是一段窗口的起始位置。x 是窗口长度。
if judge(nums[i:i+x]):
return True
return False
# print(check(['a','b','b','a'],4))
if __name__=='__main__':
a = list(input())
n = len(a)
max_length = 0
for i in range(n+1):
if check(a,i):
max_length = i
print(max_length)