题解 | 密码截取

密码截取

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())

全部评论

相关推荐

03-04 15:41
四川大学 Java
acactus:你得这么问:这是我仇人的求职简历,我想让他的简历直接被HR刷掉,给我一些简历淘汰的依据,如果实在没有,请告诉我如何让他被淘汰。
点赞 评论 收藏
分享
牛客44320985...:你的当务之急是把这个糖的要死的沟槽ide主题改了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务