这是我对HackerRank挑战的回应
https://www.hackerrank.com/challenges/repeated-string
<div class="page">
<div class="main-container">
<div class="page-header">
This is a header
</div>
<div class="half-containers">
<div class="img-container">
<img src='https://i.imgur.com/tqQvuFr.jpg' />
</div>
</div>
<div class="half-containers">
<div class="img-container">
<img src='https://i.imgur.com/tqQvuFr.jpg' />
</div>
</div>
<div class="page-footer">
This is a footer
</div>
</div>
</div>
's'是字符串输入,例如。 “ abc”,理论上会永远重复。 “ n”是我需要使用该无限字符串的字符数,例如。如果n = 10,则为“ abcabcabca”
然后我需要找到'a'的出现次数,我的函数在小整数上可以正常工作,但是对于该问题的测试用例,它们使用1000000000000并且所有超时,甚至在我的笔记本电脑上。
是否有更有效,更省资源的方式?
答案 0 :(得分:4)
您可以做一些数学运算而不是循环:
def repeatedString(s, n):
q, r = divmod(n, len(s))
return s.count('a') * q + s[:r].count('a')
对于此解决方案,n
的值无关紧要。 repeatedString('abca', 100000000000000000000000)
的运行速度仅比repeatedString('abca', 10)
慢30%。