回文 Palindrome
判断一个字符串是不是回文字符串
abccba
- 双指针,向中间
- 双指针,中心开花,注意中心位置在字符串单双情况下不同
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),注意中心是有单和双两种情况的