判断回文/找到所有回文

0X00 总结

判断回文

def judgePal(s):
    left, right = 0, len(s) - 1

    while left < right:
        if s[left] != s[right]: return False
        left += 1
        right -= 1

    return True

print(judgePal("a"))
print(judgePal("ab"))
print(judgePal("aba"))
print(judgePal("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))

找到所有回文

O(n^2)

def findAllPal(s):
    m = len(s)
    # 枚举中心点
    # 只有上半部分的结果
    # res 的下半部分没使用
    res = [[False] * m for _ in range(m)]

    for center in range(m):
        # 偶数长度回文
        left, right = center, center + 1
        while left > -1 and right < m:
            if s[left] != s[right]: break
            res[left][right] = True
            left, right = left-1, right+1
        # 奇数长度回文
        left, right = center, center
        while left > -1 and right < m:
            if s[left] != s[right]: break
            res[left][right] = True
            left, right = left - 1, right + 1

    return res

a = "aabb"
# 只有上半部分
print(findAllPal(a))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容