python實現尋找最長回文子序列的方法
更新時間:2018年06月02日 15:45:42 作者:Together_CZ
這篇文章主要為大家詳細介紹了python實現尋找最長回文子序列的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了python實現尋找最長回文子序列,這一類的問題可以使用動態(tài)規(guī)劃的方法去做,我之前應該有幾篇博文都是關于回文序列的求解的,正好有可以復用的代碼就懶得再用別的方法寫了,直接套用,思想還是滑窗切片,很簡單就是運算會多點,下面是具體實現:
#!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:尋找最長回文子序列 ''' def slice_window(one_str,w=1): ''''' 滑窗函數 ''' res_list=[] for i in range(0,len(one_str)-w+1): res_list.append(one_str[i:i+w]) return res_list 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 find_longest_sub_palindrome_str(one_str): ''''' 主函數,尋找最長回文子序列 ''' all_sub=[] for i in range(1,len(one_str)): all_sub+=slice_window(one_str,i) all_sub.append(one_str) new_list=[] for one in all_sub: if is_huiwen(list(one)): new_list.append(one) new_list.sort(lambda x,y:cmp(len(x),len(y)),reverse=True) print new_list[0] if __name__ == '__main__': one_str_list=['uabcdcbaop','abcba','dmfdkgbbfdlg','mnfkabcbadk'] for one_str in one_str_list: find_longest_sub_palindrome_str(one_str)
結果如下:
abcdcba
abcba
bb
abcba
[Finished in 0.3s]
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
pytorch Variable與Tensor合并后 requires_grad()默認與修改方式
這篇文章主要介紹了pytorch Variable與Tensor合并后 requires_grad()默認與修改方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05

Python報錯ImportError: No module named ‘mi
在 Python 開發(fā)過程中,報錯是常有的事,而當遇到“ImportError: No module named ‘missing_module’”這樣的報錯時,可能會讓開發(fā)者感到困惑和苦惱,本文將深入探討這個報錯的原因和解決方法,幫助開發(fā)者快速解決這個問題,需要的朋友可以參考下
2024-10-10 
pytorch DistributedDataParallel 多卡訓練結果變差的解決方案
這篇文章主要介紹了pytorch DistributedDataParallel 多卡訓練結果變差的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
2021-06-06