python判断回文序列_Python针对给定字符串求解所有子序列是否为回文序列的方法...

本文实例讲述了Python针对给定字符串求解所有子序列是否为回文序列的方法。分享给大家供大家参考,具体如下:

问题:

给定一个字符串,得到所有的子序列,判断是否为回文序列

思路:

对字符串遍历切片即可

下面是具体实现:

#!usr/bin/env python

# -*- coding:utf-8 -*-

'''''

__AUthor__:沂水寒城

功能:对指定字符串寻找所有回文子序列

'''

def is_huiwen(one_str_list):

'''''

输入一个字符串列表,判断是否为回文序列

'''

if len(one_str_list)==1:

return True

else:

half=len(one_str_list)/2

if len(one_str_list)%2==0:

first_list=one_str_list[:half]

second_list=one_str_list[half:]

else:

first_list=one_str_list[:half]

second_list=one_str_list[half+1:]

if first_list==second_list[::-1]:

return True

else:

return False

def get_list_all_sub_list(num_list):

'''

输入一个列表,返回该列表所有的子列表,这里定义的空列表不属于子列表,故:子列表最小长度为1

'''

if len(num_list)==1:

return [num_list]

sub_list=get_list_all_sub_list(num_list[:-1])

extra=num_list[-1:]

temp_list=[]

for one in sub_list:

temp_list.append(one+extra)

return sub_list+temp_list

def slice_func(one_str):

'''''

'''

result_list=[]

for i in range(1,len(one_str)):

result_list.append(one_str[:i])

result_list.append(one_str[i:])

result_list+=list(one_str)

result_list.append(one_str)

return list(set(result_list))

def main_func2():

'''''

主调用函数

'''

str_list=['abdc','abba']

for one_str in str_list:

result_list=slice_func(one_str)

print '-----------------------------------------------'

for one in result_list:

if is_huiwen(list(one)):

print one+'是回文序列'

def main_func1():

'''''

主调用函数

'''

str_list=['abdc','abba']

for one_str in str_list:

one_str_list=list(one_str)

one_all_sub_list=get_list_all_sub_list(one_str_list)

print '------------------------------------------------'

print one_all_sub_list

for one in one_all_sub_list:

if is_huiwen(one):

print ''.join(one)+'是回文序列'

if __name__ == '__main__':

print "脚本之家测试结果:"

main_func2()

结果如下:

希望本文所述对大家Python程序设计有所帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值