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ìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python應(yīng)用自動化部署工具Fabric原理及使用解析
這篇文章主要介紹了Python應(yīng)用自動化部署工具Fabric原理及使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
PyQt5 QTableView設(shè)置某一列不可編輯的方法
今天小編就為大家分享一篇PyQt5 QTableView設(shè)置某一列不可編輯的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
使用Python中tkinter庫簡單gui界面制作及打包成exe的操作方法(二)
這篇文章主要介紹了使用Python中tkinter庫簡單gui界面制作及打包成exe的操作方法(二),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
python 使用遞歸的方式實現(xiàn)語義圖片分割功能
這篇文章主要介紹了python 使用遞歸的方式實現(xiàn)語義圖片分割,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡單分類
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡單分類,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

