在online judge上遇到一個問題
要如何計算一個字串中某個字元出現的個數呢?(最簡便的做法)
限制:1.不能出現import敘述
2.不能出現for敘述
目前只有想到一個方法
但是會超過時間TLE
a = "ehjdjredhhd"
number_d = len(a) - len(a.replace("d",""))
還有其他更效率更pythonic的方法嗎?
我知道我這個方法太笨了
但是我還算是初學者
需要前輩指導
補充一下
online judge的編譯器是python2.x
目前試過的方法
a.count("d")
len(a.split("d"))-1
map filter lambda結合
以上方法都會TLE
作者:
s860134 (s860134)
2017-07-13 12:24:00用 map 和 lambda 達成for 的效果
目前報告原本我的方法 TLE字串的count方法 TLE
作者:
areyo (沒有名字的怪物)
2017-07-13 13:01:00好像有模組可用啊,不能import
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-07-13 14:54:00len(None for c in a if c == 'd') 呢啊這樣還要造個 list 太慢了sum(1 for c in a if c == 'd') 應該是最快的它是不接受 for keyword 還是 for statement?實驗了一下 map + filter 好像最快map(lambda _: 1, filter(lambda c: c == 'd', a))(上面外面還有一層 sum 我忘了寫)len(list(filter(lambda c: c == 'd', a))) 另一種如果是 Python 2 也可以試試 reduce 應該更快
作者: AlaRduTP (Eden) 2017-07-13 15:08:00
請問是哪個OJ呀?好挑喔뜠毽|不會是它自己主機跑太慢xD*會不會
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-07-13 15:09:00不過 str.count 他都不吃其實就很怪了, 不太可能更快
len(a.split("d"))-1我目前可以寫最短的XD
a.split("d").__len__()-1 這樣呢...哈,沒事,不要理我XD
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2017-07-13 20:50:00如果大家都這樣就不要理他了啦, 根本平台有問題
可以用recursive嗎 把字串重複分兩半 檢查單個字母是不是後回傳後加起來
作者:
pmove (金疾檸檬)
2017-07-18 22:42:00我只想問是哪個OJ,可能的話,給URL?外面沒辦法連上去嗎?給我URL,我自己連可嗎?了解,謝謝回應