【发布时间】:2019-09-19 09:42:53
【问题描述】:
我有这个挑战:Repeated String 来解决。我一直在尝试解决这个挑战,但由于内存故障而失败。我无法解决这种情况,因为 HackerRank 平台不支持我的解决方案。可能是 32 位平台。
我有这个解决方案,它非常适用于长度较小的问题,但我一直在研究这件事以根据更少的内存使用来学习。
我的代码:
def repeatedString(s, n):
if(s != 'a'):
return len([x for x in (s*n)[:n] if x == 'a'])
return n
现在,对于具有非常大长度和字符串的输入,这会引发 Memory Error 错误。
我对此进行了研究,并看到了一些提交,并发现了这一点。
排行榜的正确解决方案:
def repeatedString(s, n):
L = len(s)
return (s.count('a') * (n//L) + s[:n % L].count('a'))
就是这样!我对这个解决方案感到非常困惑,以至于我可以弄清楚实际发生了什么以及如何发生。有人可以让我知道上述正确解决方案的工作原理吗?我是 python 新手,并尽我所能在竞争性编码方面有所作为。谢谢!
【问题讨论】:
-
传递给函数的参数是什么?我猜第一个是字符串,另一个是?
-
长度。对问题的更多理解,可以参考hackerrank@AkshayNevrekar上的问题链接。