[问题] 计算字串中 某个字符出现的个数

楼主: 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