温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-04-12 13:40:15 来源:亿速云 阅读:210 作者:小新 栏目:开发技术

这篇文章主要介绍了python如何实现寻找最长回文子序列的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体实现:

#!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] 

感谢你能够认真阅读完这篇文章,希望小编分享的“python如何实现寻找最长回文子序列的方法”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI