回文,返回字符串中最长的回文串
# -*- coding: utf-8 -*-
# !usr/bin/env python
# 判断s是否是回文字符串
def isHuiwen(s):
# 法一(不建议用此方法,看似简单,但效率低,而且还要申请空间)
# return s == s[::-1] and s!=''
# 法二
if '' == s:
return False
else:
for x in range(len(s)//2):
if s[x]!=s[-x-1]:
return False
return True
# 获取字符串的所有子串
def getAllChildString(L):
result = [L[x:x+1+i] for i in range(len(L)) for x in range(len(L)-i)] # L='abc' result = ['a', 'b', 'c', 'ab', 'bc', 'abc']
# result = [ [L[x:x+1+i] for x in range(len(L)-i)] for i in range(len(L)) ] # L='abc' result = [['a', 'b', 'c'], ['ab', 'bc'], ['abc']]
return result
# 返回所有回文串
def getAllHuiwen(L):
childString = getAllChildString(L)
return list(filter(isHuiwen, childString))
# 返回最长回文串(法一):获取所有字串,依次判断是否是回文字符串,效率不高
def getMaxHuiwen1(L):
childString = getAllChildString(L)
for x in range(len(childString)): # 从最长的字串开始找,节省时间
if isHuiwen(childString[-x-1]):
return childString[-x-1]
return ''
a = 'adaelele'
print(getAllHuiwen(a))
print(getMaxHuiwen1(a))