摘要:問題描述假設(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
摘要:對于正則之前一直是一個百度程序員也許超過一半甚至更多的程序員也是那么這次來學(xué)習(xí)一下正則表達式事出有因這部分介紹一下需求的由來與主要內(nèi)容無關(guān)工作上有了這樣的需求端從來的數(shù)據(jù)格式是也就是文章內(nèi)容并夾雜著諸多標(biāo)簽和嵌套然而正在開發(fā)的是項目的標(biāo)簽 對于正則之前一直是一個百度程序員, 也許超過一半甚至更多的程序員也是, 那么這次來學(xué)習(xí)一下正則表達式. 事出有因 這部分介紹一下需求的由來, 與主要...
摘要:匹配個或個由前面的正則表達式定義的片段,非貪婪方式精確匹配個前面表達式。所以接著上面的例子,我們可以改寫一下正則表達式。因此,我們可以在使用來簡化正則表達式的書寫。 作者:畢來生微信:878799579 正則表達式本節(jié)我們看一下正則表達式的相關(guān)用法,正則表達式是處理字符串的強大的工具,它有自己特定的語法結(jié)構(gòu),有了它,實現(xiàn)字符串的檢索、替換、匹配驗證都不在話下。 當(dāng)然對于爬蟲來說,有了...
摘要:上一篇文章網(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與正則表達式抓取貓眼...
摘要:本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接理解開發(fā)錢包涉及的原文已更新,請讀者前往原文閱讀如果你還在被錢包搞的一頭霧水,來看看這邊文章吧。所以我們要開發(fā)以太坊錢包同樣需要對比特幣的錢包提案有所了解。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:理解開發(fā)HD錢包涉及的BIP32、BIP44、BIP39原文已更新,請讀者前往原文閱讀 如果你還在被HD錢包、BIP32、BIP44、BIP39搞的一頭霧水...
閱讀 2856·2023-04-25 17:59
閱讀 686·2023-04-25 15:05
閱讀 676·2021-11-25 09:43
閱讀 3038·2021-10-12 10:13
閱讀 3546·2021-09-27 13:59
閱讀 3589·2021-09-23 11:21
閱讀 3889·2021-09-08 09:35
閱讀 571·2019-08-29 17:12