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

# -*- 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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值