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

问题描述 投票:1回答:1

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

for i in range(n):

    string=string+string

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

任何帮助都会很棒。

python-3.x string string-concatenation
1个回答
0
投票

您没有串联n次。在每次迭代中,您都将当前字符串加倍。大小变成了,

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

这就是为什么非常迅速地使内存越界是非常合理的。

您需要执行以下操作以将字符串连接n次:

res = ""
for i in range(n):
    res=res+string
© www.soinside.com 2019 - 2024. All rights reserved.