题目:判断一个字符串是否是回文
方法:设定两个指针,分别有头尾向中间移动 或者由中间向两边移动
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def isPalindrome(s):
'''判断一个字符串是否为回文'''
lens = len(s)
if lens <=1:
return True
l,r = 0, lens-1
while l<r:
if s[l] != s[r]:
return False
l += 1
r -= 1
return True
def longestPalindrome(s):
'''查找一个字符串中的最长回文字串'''
maxl, lens = 1, len(s)
for i in xrange(lens):
j = 1
while i-j>=0 and i+j<lens:
if s[i-j] != s[i+j]:
break
j += 1
if 2*(j-1)+1 > maxl:
maxl = 2*(j-1) + 1
j = 0
while i-j>=0 and i+j+1<lens:
if s[i-j] != s[i+j+1]:
break
j += 1
if 2*(j-1)+2 > maxl:
maxl = 2*(j-1) + 2
return maxl
if __name__ == '__main__':
s = 'qabcdefgfedcbaa'
print isPalindrome(s)
print longestPalindrome(s)