python求解对给定字符串,求解所有子序列是否为回文序列

来源:互联网 发布:sql developer使用 编辑:程序博客网 时间:2024/06/06 14:16

问题:

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

思路:

对字符串遍历切片即可

下面是具体实现:


#!usr/bin/env python#encoding: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 Falsedef 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__':    main_func2()


结果如下:


-----------------------------------------------a是回文序列c是回文序列d是回文序列b是回文序列-----------------------------------------------a是回文序列abba是回文序列b是回文序列[Finished in 0.3s]


阅读全文
1 0
原创粉丝点击