python如何实现寻找最长回文子序列的方法

  介绍

这篇文章主要介绍了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如何实现寻找最长回文子序列的方法