美文网首页
判断回文/找到所有回文

判断回文/找到所有回文

作者: madao756 | 来源:发表于2020-03-19 15:14 被阅读0次

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

相关文章

网友评论

      本文标题:判断回文/找到所有回文

      本文链接:https://www.haomeiwen.com/subject/aerlyhtx.html