Python實(shí)現(xiàn)統(tǒng)計(jì)給定字符串中重復(fù)模式最高子串功能示例
本文實(shí)例講述了Python實(shí)現(xiàn)統(tǒng)計(jì)給定字符串中重復(fù)模式最高子串功能。分享給大家供大家參考,具體如下:
給定一個(gè)字符串,如何得到其中重復(fù)模式最高的子字符串,我采用的方法是使用滑窗機(jī)制,對給定的字符串切分,窗口的大小從1增加到字符串長度減1,將所有的得到的切片統(tǒng)計(jì)結(jié)果,在這里不考慮單個(gè)字符的重復(fù)模式,好了,很簡單看具體實(shí)現(xiàn):
#!usr/binenv python
#encoding:utf-8
'''''
__Author__:沂水寒城
統(tǒng)計(jì)一個(gè)給定字符串中重復(fù)模式數(shù)量得到最高重復(fù)模式串
'''
def slice(num_str,w):
'''''
對輸入的字符串滑窗切片返回結(jié)果列表
'''
result_list=[]
for i in range(len(num_str)-w+1):
result_list.append(num_str[i:i+w])
return result_list
def get_repeat_num_seq(num_str):
'''''
統(tǒng)計(jì)重復(fù)模式串?dāng)?shù)量
'''
result_dict={}
result_list=[]
for i in range(2,len(num_str)):
one_list=slice(num_str, i)
result_list+=one_list
for i in range(len(result_list)):
if result_list[i] in result_dict:
result_dict[result_list[i]]+=1
else:
result_dict[result_list[i]]=1
sorted_result_dict=sorted(result_dict.items(), key=lambda e:e[1], reverse=True)
return sorted_result_dict[0:10]
if __name__ == '__main__':
num_list=get_repeat_num_seq('4513785645121214545454545457894')
print num_list
結(jié)果如下:
[('45', 8), ('4545', 5), ('454', 5), ('545', 5), ('54', 5), ('5454', 4), ('454545', 4), ('45454', 4), ('54545', 4), ('545454', 3)]
[Finished in 0.5s]
結(jié)果列表中第一個(gè)即為所求,當(dāng)然,基于此還可以繼續(xù)改進(jìn)有很多別的需求。
PS:這里再為大家推薦2款非常方便的統(tǒng)計(jì)工具供大家參考使用:
在線字?jǐn)?shù)統(tǒng)計(jì)工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計(jì)與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python實(shí)現(xiàn)區(qū)間合并的方法
區(qū)間合并是指將重疊的區(qū)間合并為一個(gè)或多個(gè)不重疊的區(qū)間,本文主要介紹了python實(shí)現(xiàn)區(qū)間合并的方法,文中通過代碼介紹的很詳細(xì),感興趣的可以了解一下2024-02-02
Python二進(jìn)制文件轉(zhuǎn)換為文本文件的代碼實(shí)現(xiàn)
在日常編程中,我們經(jīng)常會(huì)遇到需要將二進(jìn)制文件轉(zhuǎn)換為文本文件的情況,在Python中,我們可以利用各種庫和技術(shù)來完成這項(xiàng)任務(wù),本文將介紹如何使用Python將二進(jìn)制文件轉(zhuǎn)換為文本文件,并提供實(shí)用的代碼示例,需要的朋友可以參考下2024-04-04
詳談Python2.6和Python3.0中對除法操作的異同
下面小編就為大家?guī)硪黄斦凱ython2.6和Python3.0中對除法操作的異同。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04
解決tensorflow/keras時(shí)出現(xiàn)數(shù)組維度不匹配問題
這篇文章主要介紹了解決tensorflow/keras時(shí)出現(xiàn)數(shù)組維度不匹配問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python中collections.Counter()的具體使用
本文主要介紹了Python中collections.Counter()的具體使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Pygame實(shí)戰(zhàn)之實(shí)現(xiàn)經(jīng)典外星人游戲
這篇文章主要介紹了通過Pygame實(shí)現(xiàn)經(jīng)典的外星人游戲的示例代碼,文中的代碼講解詳細(xì),對我們了解Pygame有一定的幫助,感興趣的同學(xué)可以試一試2022-01-01
python 字符串的駐留機(jī)制及優(yōu)缺點(diǎn)
字符串駐留是一種僅保存一份相同且不可變字符串的方法。這篇文章主要介紹了python 字符串的駐留機(jī)制,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

