在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,我自己连可吗?了解,谢谢回应