介绍
这篇文章主要介绍了python如何实现寻找最长回文子序列的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
具体实现:
# !/usr/bin env python #编码:utf-8 , & # 39;& # 39;& # 39;& # 39;& # 39;, __Author__:沂水寒城, 功能:寻找最长回文子序列, & # 39;& # 39;& # 39;, , def slice_window (one_str w=1):, & # 39;才能& # 39;& # 39;& # 39;& # 39;, ,,滑窗函数, & # 39;才能& # 39;& # 39;, res_list=[],才能 for 才能小姐:拷贝范围(0,len (one_str) - w + 1):, ,,,res_list.append (one_str[我+ w]), return 才能;res_list , , def is_huiwen (one_str_list):,, & # 39;才能& # 39;& # 39;& # 39;& # 39;, 输才能入一个字符串列表,判断是否为回文序列, & # 39;才能& # 39;& # 39;,, if 才能len (one_str_list)==1:,, ,,,return True ,, ,,:, ,,,一半=len (one_str_list)/2,, ,,,if len (one_str_list) % 2==0:,, ,,,,,first_list=one_str_list(一半):,, ,,,,,second_list=one_str_list [:],, 其他,,,,,, ,,,,,first_list=one_str_list(一半):,, ,,,,,second_list=one_str_list(+ 1:一半),, ,,,if first_list==second_list [:: 1]:,, ,,,,,return True ,, 其他,,,,,, ,,,,,return False , , , def find_longest_sub_palindrome_str (one_str):, & # 39;才能& # 39;& # 39;& # 39;& # 39;, 主才能函数,寻找最长回文子序列, & # 39;才能& # 39;& # 39;, all_sub=[],才能 for 才能小姐:拷贝范围(len (one_str)):, ,,,all_sub +=slice_window (one_str,我), all_sub.append才能(one_str), new_list=[],才能 for 才能;one  all_sub:拷贝, ,,,if is_huiwen(列表(一)):, ,,,,,new_list.append(一), new_list.sort才能(lambda x, y: cmp (len (x), len (y)),反向=True), print 才能new_list [0], , , if __name__ ==, & # 39; __main__ # 39;:, one_str_list才能=[& # 39;uabcdcbaop& # 39; & # 39; abcba& # 39;, & # 39; dmfdkgbbfdlg& # 39;, & # 39; mnfkabcbadk& # 39;], for 才能;one_str  one_str_list:拷贝, ,,,find_longest_sub_palindrome_str (one_str)
结果如下:
abcdcba
引用>
abcba
bb
abcba
(在0.3秒完成),感谢你能够认真阅读完这篇文章,希望小编分享的“python如何实现寻找最长回文子序列的方法”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
python如何实现寻找最长回文子序列的方法