Python針對(duì)給定字符串求解所有子序列是否為回文序列的方法
本文實(shí)例講述了Python針對(duì)給定字符串求解所有子序列是否為回文序列的方法。分享給大家供大家參考,具體如下:
問題:
給定一個(gè)字符串,得到所有的子序列,判斷是否為回文序列
思路:
對(duì)字符串遍歷切片即可
下面是具體實(shí)現(xiàn):
#!usr/bin/env python # -*- coding:utf-8 -*- ''''' __AUthor__:沂水寒城 功能:對(duì)指定字符串尋找所有回文子序列 ''' 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 get_list_all_sub_list(num_list): ''' 輸入一個(gè)列表,返回該列表所有的子列表,這里定義的空列表不屬于子列表,故:子列表最小長(zhǎng)度為1 ''' if len(num_list)==1: return [num_list] sub_list=get_list_all_sub_list(num_list[:-1]) extra=num_list[-1:] temp_list=[] for one in sub_list: temp_list.append(one+extra) return sub_list+temp_list def slice_func(one_str): ''''' ''' result_list=[] for i in range(1,len(one_str)): result_list.append(one_str[:i]) result_list.append(one_str[i:]) result_list+=list(one_str) result_list.append(one_str) return list(set(result_list)) def main_func2(): ''''' 主調(diào)用函數(shù) ''' str_list=['abdc','abba'] for one_str in str_list: result_list=slice_func(one_str) print '-----------------------------------------------' for one in result_list: if is_huiwen(list(one)): print one+'是回文序列' def main_func1(): ''''' 主調(diào)用函數(shù) ''' str_list=['abdc','abba'] for one_str in str_list: one_str_list=list(one_str) one_all_sub_list=get_list_all_sub_list(one_str_list) print '------------------------------------------------' print one_all_sub_list for one in one_all_sub_list: if is_huiwen(one): print ''.join(one)+'是回文序列' if __name__ == '__main__': print "腳本之家測(cè)試結(jié)果:" main_func2()
結(jié)果如下:
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- 在Python中使用filter去除列表中值為假及空字符串的例子
- python替換字符串中的子串圖文步驟
- Python查找最長(zhǎng)不包含重復(fù)字符的子字符串算法示例
- 在Python中實(shí)現(xiàn)替換字符串中的子串的示例
- python實(shí)現(xiàn)求兩個(gè)字符串的最長(zhǎng)公共子串方法
- Python實(shí)現(xiàn)統(tǒng)計(jì)給定字符串中重復(fù)模式最高子串功能示例
- Python實(shí)現(xiàn)針對(duì)給定字符串尋找最長(zhǎng)非重復(fù)子串的方法
- Python求兩個(gè)字符串最長(zhǎng)公共子序列代碼實(shí)例
相關(guān)文章
基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換
這篇文章主要介紹了基于python實(shí)現(xiàn)地址和經(jīng)緯度轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05keras 使用Lambda 快速新建層 添加多個(gè)參數(shù)操作
這篇文章主要介紹了keras 使用Lambda 快速新建層 添加多個(gè)參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python中axis=0與axis=1指的方向有什么不同詳解
對(duì)數(shù)據(jù)進(jìn)行操作時(shí),經(jīng)常需要在橫軸方向或者數(shù)軸方向?qū)?shù)據(jù)進(jìn)行操作,這時(shí)需要設(shè)定參數(shù)axis的值,下面這篇文章主要給大家介紹了關(guān)于Python中axis=0與axis=1指的方向有什么不同的相關(guān)資料,需要的朋友可以參考下2024-01-01python 統(tǒng)計(jì)一個(gè)列表當(dāng)中的每一個(gè)元素出現(xiàn)了多少次的方法
今天小編就為大家分享一篇python 統(tǒng)計(jì)一個(gè)列表當(dāng)中的每一個(gè)元素出現(xiàn)了多少次的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11Pycharm學(xué)習(xí)教程(6) Pycharm作為Vim編輯器使用
這篇文章主要為大家詳細(xì)介紹了最全的Pycharm學(xué)習(xí)教程第六篇,Pycharm作為Vim編輯器使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05Python qrcode 生成一個(gè)二維碼的實(shí)例詳解
在本篇文章里小編給大家整理的是關(guān)于Python qrcode 生成一個(gè)二維碼的實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02深度學(xué)習(xí)小工程練習(xí)之tensorflow垃圾分類詳解
這篇文章主要介紹了練習(xí)深度學(xué)習(xí)的一個(gè)小工程,代碼簡(jiǎn)單明確,用來作為學(xué)習(xí)深度學(xué)習(xí)的練習(xí)很適合,對(duì)于有需要的朋友可以參考下,希望大家可以體驗(yàn)到深度學(xué)習(xí)帶來的收獲2021-04-04