成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【問題】從一長串?dāng)?shù)字中找到重復(fù)多次的三個數(shù)字

afishhhhh / 3098人閱讀

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

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

假設(shè)給定一個很長的數(shù)字,比如PI精確到100萬位,找到其中重復(fù)出現(xiàn)相鄰三個數(shù)字。比如給定的數(shù)字是1233223332321234323123,那么結(jié)果應(yīng)該是:

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

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

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"]

接下來我們需要統(tǒng)計切好的序列里各個數(shù)字出現(xiàn)的次數(shù),因為需要處理是3位數(shù)字,可以考慮新建一個長度為1000的空序列,如果數(shù)字出現(xiàn)就在對應(yīng)下標(biāo)加一,達到統(tǒng)計的目的。

seq = [0] * 1000

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

最后我們只要把新序列里統(tǒng)計值大于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

我們可以用更加優(yōu)雅的方式來呈現(xiàn)以上算法,簡潔但不簡單。

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上原題的最佳答案。

拓展思考

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

關(guān)于作者:

Toby Qin, Python 技術(shù)愛好者,目前從事測試開發(fā)相關(guān)工作,轉(zhuǎn)載請注明原文出處。

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41178.html

相關(guān)文章

  • js謎之正則表達式

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

    wendux 評論0 收藏0
  • 正則從零到簡單分析html標(biāo)簽

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

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

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

    phpmatt 評論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---26、正則表達式

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

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

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

    firim 評論0 收藏0

發(fā)表評論

0條評論

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