题解 | 密码截取
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
class ValidPasWd:
def __init__(self, s: str):
self.s = s
self.n = len(s)
def __call__(self) -> int:
if self.n == 0:
return 0
max_len = 1 # 最小长度为1(单字符)
# 遍历每个可能的中心(奇数长度和偶数长度)
for i in range(self.n):
# 奇数长度回文(中心为单个字符)
len1 = self.expand(i, i)
# 偶数长度回文(中心为两个字符中间)
len2 = self.expand(i, i + 1)
max_len = max(max_len, len1, len2)
return max_len
# 从中心向两边扩展,返回回文长度
def expand(self, left: int, right: int) -> int:
while left >= 0 and right < self.n and self.s[left] == self.s[right]:
left -= 1
right += 1
# 退出循环时,实际有效长度为 (right-1) - (left+1) + 1 = right - left - 1
return right - left - 1
s = input()
valpaswd = ValidPasWd(s)
print(valpaswd())


