国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【問題】從一長串數字中找到重復多次的三個數字

afishhhhh / 3093人閱讀

摘要:問題描述假設給定一個很長的數字,比如精確到萬位,找到其中重復出現相鄰三個數字。最后我們只要把新序列里統計值大于的打印出來即可。我們可以用更加優雅的方式來呈現以上算法,簡潔但不簡單。以上便是上原題的最佳答案。

問題描述
https://stackoverflow.com/que...

假設給定一個很長的數字,比如PI精確到100萬位,找到其中重復出現相鄰三個數字。比如給定的數字是1233223332321234323123,那么結果應該是:

123 repeat 3 times
233 repeat 2 times
323 repeat 2 times
332 repeat 2 times
解決思路

如果要統計相鄰三個數字的重復次數,那么必然需要將其所有可能都列出來,通過Python的切片我們很容易實現:

number = "1233223332321234323123"
split = [number[position:position + 3] for position in range(len(number) - 2)]

print(split)
# ["123", "233", "332", "322", "223", "233", "333", "332", "323", "232", "321", "212", "123", "234", "343", "432", "323", "231", "312", "123"]

接下來我們需要統計切好的序列里各個數字出現的次數,因為需要處理是3位數字,可以考慮新建一個長度為1000的空序列,如果數字出現就在對應下標加一,達到統計的目的。

seq = [0] * 1000

for x in split:
    seq[int(x)] += 1

最后我們只要把新序列里統計值大于1的打印出來即可。

for i in range(1000):
    if seq[i] > 1:
        print("{} repeat {} times".format(i, seq[i]))

# 123 repeat 3 times
# 233 repeat 2 times
# 323 repeat 2 times
# 332 repeat 2 times

我們可以用更加優雅的方式來呈現以上算法,簡潔但不簡單。

seq = [0] * 1000

for val in [int(number[pos:pos+3]) for pos in range(len(number) - 2)]:
    seq[val] += 1

print ([(num, seq[num]) for num in range(1000) if seq[num] > 1])

以上便是Stack Overflow上原題的最佳答案。

拓展思考

如果這個問題給定的不是數字,而是字符串比如abccdbadfdaabc,依然是要找到相鄰的3個重復字母,你有沒有好辦法?

關于作者:

Toby Qin, Python 技術愛好者,目前從事測試開發相關工作,轉載請注明原文出處。

歡迎關注我的博客 https://betacat.online,你可以到我的公眾號中去當吃瓜群眾。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41178.html

相關文章

  • js謎之正則表達式

    摘要:用正則表達式語言創建的。匹配非數字的字符使用元字符元字符在正則表達式中有特殊含義的字符。正則表達式默認是區別大小寫的。正則表達式的字符串表示。若是一個正則表達式,若有標志則替換所有匹配之處,若沒有則只替換第一個匹配之處。 前言 好久之前就說要寫一篇正則表達式的文章,正則表達式總是記了又忘,忘了再記,記了再忘,卒。言歸正傳,今天終于要研究一下這個謎一樣的正則表達式了。其實正則表達式并不難...

    wendux 評論0 收藏0
  • 正則從零到簡單分析html標簽

    摘要:對于正則之前一直是一個百度程序員也許超過一半甚至更多的程序員也是那么這次來學習一下正則表達式事出有因這部分介紹一下需求的由來與主要內容無關工作上有了這樣的需求端從來的數據格式是也就是文章內容并夾雜著諸多標簽和嵌套然而正在開發的是項目的標簽 對于正則之前一直是一個百度程序員, 也許超過一半甚至更多的程序員也是, 那么這次來學習一下正則表達式. 事出有因 這部分介紹一下需求的由來, 與主要...

    antz 評論0 收藏0
  • Python3之正則表達式詳解

    摘要:匹配個或個由前面的正則表達式定義的片段,非貪婪方式精確匹配個前面表達式。所以接著上面的例子,我們可以改寫一下正則表達式。因此,我們可以在使用來簡化正則表達式的書寫。 作者:畢來生微信:878799579 正則表達式本節我們看一下正則表達式的相關用法,正則表達式是處理字符串的強大的工具,它有自己特定的語法結構,有了它,實現字符串的檢索、替換、匹配驗證都不在話下。 當然對于爬蟲來說,有了...

    phpmatt 評論0 收藏0
  • Python3網絡爬蟲實戰---26、正則表達式

    摘要:上一篇文章網絡爬蟲實戰高級用法下一篇文章網絡爬蟲實戰與正則表達式抓取貓眼電影排行本節我們看一下正則表達式的相關用法,正則表達式是處理字符串的強大的工具,它有自己特定的語法結構,有了它,實現字符串的檢索替換匹配驗證都不在話下。 上一篇文章:Python3網絡爬蟲實戰---25、requests:高級用法下一篇文章:Python3網絡爬蟲實戰---27、Requests與正則表達式抓取貓眼...

    Pocher 評論0 收藏0
  • 理解開發HD錢包涉及BIP32、BIP44、BIP39

    摘要:本文首發于深入淺出區塊鏈社區原文鏈接理解開發錢包涉及的原文已更新,請讀者前往原文閱讀如果你還在被錢包搞的一頭霧水,來看看這邊文章吧。所以我們要開發以太坊錢包同樣需要對比特幣的錢包提案有所了解。 本文首發于深入淺出區塊鏈社區原文鏈接:理解開發HD錢包涉及的BIP32、BIP44、BIP39原文已更新,請讀者前往原文閱讀 如果你還在被HD錢包、BIP32、BIP44、BIP39搞的一頭霧水...

    firim 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<