欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

回文,返回字符串中最长的回文串

程序员文章站 2024-02-25 09:40:58
...
# -*- 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))