1. 程式人生 > >python獲取指定字串中重複模式最高的字串

python獲取指定字串中重複模式最高的字串

    給定一個字串,如何得到其中重複模式最高的子字串,我採用的方法是使用滑窗機制,對給定的字串切分,視窗的大小從1增加到字串長度減1,將所有的得到的切片統計結果,在這裡不考慮單個字元的重複模式,好了,很簡單看具體實現:

#!usr/binenv python
#encoding:utf-8

'''
__Author__:沂水寒城
統計一個給定字串中重複模式數量得到最高重複模式串
'''

def slice(num_str,w):
    '''
    對輸入的字串滑窗切片返回結果列表
    '''
    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):
    '''
    統計重複模式串數量
    '''
    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


    結果如下:
[('45', 8), ('4545', 5), ('454', 5), ('545', 5), ('54', 5), ('5454', 4), ('454545', 4), ('45454', 4), ('54545', 4), ('545454', 3)]
[Finished in 0.5s]
    結果列表中第一個即為所求,當然,基於此還可以繼續改進有很多別的需求。

相關推薦

python獲取指定字串重複模式最高字串

    給定一個字串,如何得到其中重複模式最高的子字串,我採用的方法是使用滑窗機制,對給定的字串切分,視窗的大小從1增加到字串長度減1,將所有的得到的切片統計結果,在這裡不考慮單個字元的重複模式,好了,很簡單看具體實現: #!usr/binenv python #encod

python xpath 獲取指定頁面指定區域的html代碼

pytho sts clas xpath nbsp install .get element XML   最近一個朋友問我怎麽把一個指定區域的內容轉成pdf,網上查了一下python裏面有個wkhtmltopdf模塊可以將str、file、url轉成pdf,我們今天不聊

Python 找出字串出現頻率最高的字母

發現一個學Python的好網站 https://py.checkio.org 第一題大概意思就是找出一個字串中出現頻率最高字母 我的思路也是直接,弄個字典,遍歷字串,將鍵值對填進字典裡,健就是字母,值就是出現了幾次,再查下字典裡最大的值即可。 上我的程式碼 import

javaSE (三十二)找出字串重複的元素並寫入檔案、模擬正版軟體使用次數期限、獲取資料夾下的全部java檔案

1、找出字串中重複的元素並寫入檔案: 問題:鍵入(或者從一個檔案中讀取)一個字串,找出字串中重複的元素並寫入檔案 思路: 鍵入字串 map儲存 寫入檔案 程式碼: package cn.njupt; /* * * 鍵入一串字元,計算每個字元出

QTQString 類的使用--獲取指定字元位置、擷取子字串

QString 類中各函式的作用。 一、字串連線函式。 1、QString也過載的+和+=運算子。這兩個運算子可以把兩個字串連線到一起。      2、QString的append()函式則提供了類似的操作,例如:    str = "User: ";      str

bash python獲取文本每個字符出現的次數

false 字符 print rep count set encoding grep read bash: grep -o . myfile | sort |uniq -c python: 使用collections模塊 import pprint

python 獲取指定資料夾下所以檔案

reportPath =資料夾路徑 listdir=以一個list返回資料夾下所以檔案 dirs = os.listdir(reportPath)print(dirs) def __get_report(self): """獲取最新測試報告""" dirs = os.listdir(repo

兩個字串重複字串的最大連續長度

對比兩個字串中,重複字串的最大連續長度   如:    string m_strA = "lgdglfsdafpganecw";   string m_strB = 

zabbix:利用zabbix api獲取指定的主機的名字並將其修改

思路講解:首先利用hostgroup.get方法獲取zabbix組的id與名字,然後檢索獲得指定組的id,再利用host.get獲取該指定組下的所有主機的id與名字,最後利用host.update根據主機的id更新主機的名字。 程式碼如下: #!/usr/bin/env python

python獲取指定目錄下的所有指定字尾的檔名

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python獲取指定目錄下所有檔名os.walk和os.listdir

python獲取指定目錄下所有檔名os.walk和os.listdir 覺得有用的話,歡迎一起討論相互學習~Follow Me os.walk 返回指定路徑下所有檔案和子資料夾中所有檔案列表 其中資料夾下路徑如下: import os def file_name_walk(file_

查詢一個字串出現頻率最高的字元

程式碼: let a='hhhhweeowiohhhlbbccdd'; a=a.split(''); // console.log(a instanceof Array); function findRes(){ let r

python在一個字串找到另外一個字串並找到該字元起始的位置

程式碼詳解 def index_of_str(seq, sub_seq): index=[] n1=len(seq) n2=len(sub_seq) for i i

Java將兩個字串重複的元素取出來賦給另一個字串

import java.util.Scanner; /** * 現在有兩個使用者輸入的字串,將這兩個字串中重複的元素取出來賦給另一個字串 * @author 萬星明 * @version 1.0

Yii2獲取指定的所有欄位

參考地址: https://blog.csdn.net/xinren369/article/details/51865424 public function actionTableField(){ $tableName= 'member'; (表名)

每天一道LeetCode-----尋找給定字串重複出現的子串

Repeated DNA Sequences 在給定字串中尋找重複出現的序列,每個序列長度為10 可以採用unordered_map記錄每個序列出現的個數,將出現超過一次的新增到結果集中 程式碼如下 class Solution { publ

python 獲取指定資料夾的大小

  def getdirsize(dirpath): size = 0 for root, dirs, files in os.walk(dirpath): size += sum([getsize(join(root, name)) for name in

zabbix:利用zabbix api獲取指定的主機的名字並將其修改

思路講解:首先利用hostgroup.get方法獲取zabbix組的id與名字,然後檢索獲得指定組的id,再利用host.get獲取該指定組下的所有主機的id與名字,最後利用host.update根據主機的id更新主機的名字。 程式碼如下: #!/usr/bin

Python獲取指定目錄下檔案數量及總大小

import os totalSize = 0 fileNum = 0 dirNum = 0 def visitDir(path): global totalSize glob

一道python面試題: 輸出字串對稱的子字串的最大長度(最長迴文)

舉例: 輸入cool 則輸出2 輸入nan 則輸出3 輸入google 則輸出4 直接上程式碼: def count_sym(s): length = len(s) list_s = [] for i in range(length-1):