跳转至

回文 Palindrome

判断一个字符串是不是回文字符串

abccba

  1. 双指针,向中间
  2. 双指针,中心开花,注意中心位置在字符串单双情况下不同
def palindrome_1(string):
    # 两头夹逼
    l, r = 0, len(string) - 1
    while l < r:
        if string[l] != string[r]:
            return False
        l += 1
        r -= 1
    return True

def palindrome_2(string):
    # 中心扩展
    l = (len(string) - 1) // 2
    r = l if len(string) % 2 == 1 else l + 1
    while l >= 0:
        if string[l] != string[r]:
            return False
        l -= 1
        r += 1
    return True

找出所有回文子字符串

absanabasjsabwlk

每个位置中心开花,O(n^2),注意中心是有单和双两种情况的