摘要:問題描述假設給定一個很長的數字,比如精確到萬位,找到其中重復出現相鄰三個數字。最后我們只要把新序列里統計值大于的打印出來即可。我們可以用更加優雅的方式來呈現以上算法,簡潔但不簡單。以上便是上原題的最佳答案。
問題描述
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
摘要:對于正則之前一直是一個百度程序員也許超過一半甚至更多的程序員也是那么這次來學習一下正則表達式事出有因這部分介紹一下需求的由來與主要內容無關工作上有了這樣的需求端從來的數據格式是也就是文章內容并夾雜著諸多標簽和嵌套然而正在開發的是項目的標簽 對于正則之前一直是一個百度程序員, 也許超過一半甚至更多的程序員也是, 那么這次來學習一下正則表達式. 事出有因 這部分介紹一下需求的由來, 與主要...
摘要:匹配個或個由前面的正則表達式定義的片段,非貪婪方式精確匹配個前面表達式。所以接著上面的例子,我們可以改寫一下正則表達式。因此,我們可以在使用來簡化正則表達式的書寫。 作者:畢來生微信:878799579 正則表達式本節我們看一下正則表達式的相關用法,正則表達式是處理字符串的強大的工具,它有自己特定的語法結構,有了它,實現字符串的檢索、替換、匹配驗證都不在話下。 當然對于爬蟲來說,有了...
摘要:上一篇文章網絡爬蟲實戰高級用法下一篇文章網絡爬蟲實戰與正則表達式抓取貓眼電影排行本節我們看一下正則表達式的相關用法,正則表達式是處理字符串的強大的工具,它有自己特定的語法結構,有了它,實現字符串的檢索替換匹配驗證都不在話下。 上一篇文章:Python3網絡爬蟲實戰---25、requests:高級用法下一篇文章:Python3網絡爬蟲實戰---27、Requests與正則表達式抓取貓眼...
摘要:本文首發于深入淺出區塊鏈社區原文鏈接理解開發錢包涉及的原文已更新,請讀者前往原文閱讀如果你還在被錢包搞的一頭霧水,來看看這邊文章吧。所以我們要開發以太坊錢包同樣需要對比特幣的錢包提案有所了解。 本文首發于深入淺出區塊鏈社區原文鏈接:理解開發HD錢包涉及的BIP32、BIP44、BIP39原文已更新,請讀者前往原文閱讀 如果你還在被HD錢包、BIP32、BIP44、BIP39搞的一頭霧水...
閱讀 2852·2023-04-25 17:59
閱讀 683·2023-04-25 15:05
閱讀 673·2021-11-25 09:43
閱讀 3035·2021-10-12 10:13
閱讀 3537·2021-09-27 13:59
閱讀 3585·2021-09-23 11:21
閱讀 3880·2021-09-08 09:35
閱讀 569·2019-08-29 17:12