将字符串连接n次导致内存错误

所以我正在尝试实现一个函数,该函数将字符串和int n作为输入,其中n是无限字符串的前n个数字。然后,此函数返回在该字符串中出现“ a”的次数。现在我面临的问题是输入上的“内存错误”(“ a”,10000000000000)。 可能是因为它占用了大量内存;

for i in range(n):

    string=string+string

我想知道是否有其他方法可以处理字符串以使字符串无限而不浪费内存。 我正在慢慢建立关于python基础的逻辑,如果这是一个多余的问题,我感到抱歉。

任何帮助都将是惊人的。

评论
亦莫离
亦莫离

you are not concatenating n times. In each iteration, you are doubling the current string. So the size becomes (k is the size of string),

k + 2k + 4k+2nk = k(1 + 2 + 4 + ... + 2n) = k(2^n - 1)/ (2 - 1) ~ k*2^n = O(2^n)

这就是为什么非常快速地获取内存是非常合理的。

What you need to do is the following to concatenate a string n times:

res = ""
for i in range(n):
    res=res+string
点赞
评论