Python針對給定字符串求解所有子序列是否為回文序列的方法
本文實例講述了Python針對給定字符串求解所有子序列是否為回文序列的方法。分享給大家供大家參考,具體如下:
問題:
給定一個字符串,得到所有的子序列,判斷是否為回文序列
思路:
對字符串遍歷切片即可
下面是具體實現(xiàn):
#!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(): ''''' 主調(diào)用函數(shù) ''' 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(): ''''' 主調(diào)用函數(shù) ''' 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 "腳本之家測試結(jié)果:" main_func2()
結(jié)果如下:
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
基于python實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換
這篇文章主要介紹了基于python實現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05keras 使用Lambda 快速新建層 添加多個參數(shù)操作
這篇文章主要介紹了keras 使用Lambda 快速新建層 添加多個參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python中axis=0與axis=1指的方向有什么不同詳解
對數(shù)據(jù)進行操作時,經(jīng)常需要在橫軸方向或者數(shù)軸方向?qū)?shù)據(jù)進行操作,這時需要設(shè)定參數(shù)axis的值,下面這篇文章主要給大家介紹了關(guān)于Python中axis=0與axis=1指的方向有什么不同的相關(guān)資料,需要的朋友可以參考下2024-01-01python 統(tǒng)計一個列表當(dāng)中的每一個元素出現(xiàn)了多少次的方法
今天小編就為大家分享一篇python 統(tǒng)計一個列表當(dāng)中的每一個元素出現(xiàn)了多少次的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Pycharm學(xué)習(xí)教程(6) Pycharm作為Vim編輯器使用
這篇文章主要為大家詳細介紹了最全的Pycharm學(xué)習(xí)教程第六篇,Pycharm作為Vim編輯器使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解
這篇文章主要介紹了練習(xí)深度學(xué)習(xí)的一個小工程,代碼簡單明確,用來作為學(xué)習(xí)深度學(xué)習(xí)的練習(xí)很適合,對于有需要的朋友可以參考下,希望大家可以體驗到深度學(xué)習(xí)帶來的收獲2021-04-04