[問題] 計算字串中 某個字元出現的個數

作者: LessonWang (橘白Cat)   2017-07-13 12:16:07
在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 的效果
作者: LessonWang (橘白Cat)   2017-07-13 12:32:00
目前報告原本我的方法 TLE字串的count方法 TLE
作者: areyo (沒有名字的怪物)   2017-07-13 13:01:00
好像有模組可用啊,不能import
作者: uranusjr (←這人是超級笨蛋)   2017-07-13 14:54:00
len(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 他都不吃其實就很怪了, 不太可能更快
作者: HenryLiKing (HenryLiKing)   2017-07-13 15:12:00
len(a.split("d"))-1我目前可以寫最短的XD
作者: shadowjohn (轉角遇到愛)   2017-07-13 15:26:00
a.split("d").__len__()-1 這樣呢...哈,沒事,不要理我XD
作者: uranusjr (←這人是超級笨蛋)   2017-07-13 20:50:00
如果大家都這樣就不要理他了啦, 根本平台有問題
作者: brightwish (密碼同帳號)   2017-07-16 10:45:00
可以用recursive嗎 把字串重複分兩半 檢查單個字母是不是後回傳後加起來
作者: pmove (金疾檸檬)   2017-07-18 22:42:00
我只想問是哪個OJ,可能的話,給URL?外面沒辦法連上去嗎?給我URL,我自己連可嗎?了解,謝謝回應

Links booklink

Contact Us: admin [ a t ] ucptt.com