本文實例講述了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 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_listdef 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相關內容感興趣的讀者可查看本站專題:《Python函數使用技巧總結》、《Python數據結構與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答