国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實(shí)現(xiàn)尋找最長回文子序列的方法

2020-02-15 21:36:09
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了python實(shí)現(xiàn)尋找最長回文子序列,這一類的問題可以使用動(dòng)態(tài)規(guī)劃的方法去做,我之前應(yīng)該有幾篇博文都是關(guān)于回文序列的求解的,正好有可以復(fù)用的代碼就懶得再用別的方法寫了,直接套用,思想還是滑窗切片,很簡單就是運(yùn)算會(huì)多點(diǎn),下面是具體實(shí)現(xiàn):

#!usr/bin/env python #encoding:utf-8  ''''' __Author__:沂水寒城 功能:尋找最長回文子序列 '''  def slice_window(one_str,w=1):   '''''   滑窗函數(shù)   '''   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):    '''''   輸入一個(gè)字符串列表,判斷是否為回文序列   '''    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):   '''''   主函數(shù),尋找最長回文子序列   '''   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) 

結(jié)果如下:

abcdcba 
abcba 
bb 
abcba 
[Finished in 0.3s] 

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 普宁市| 彩票| 仁化县| 周宁县| 沧州市| 新沂市| 曲阜市| 宁远县| 桐乡市| 吉木乃县| 开原市| 阿拉善左旗| 安西县| 绥化市| 舞阳县| 广昌县| 黑水县| 惠水县| 通城县| 海城市| 大兴区| 垣曲县| 昌都县| 项城市| 永平县| 青岛市| 崇信县| 朝阳市| 合肥市| 合山市| 石门县| 老河口市| 万盛区| 宜宾市| 察雅县| 东源县| 光山县| 横山县| 牙克石市| 河曲县| 西藏|