gpt4 book ai didi

javascript - 字符串操作的Nodejs内存不足错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:08:46 28 4
gpt4 key购买 nike

给定一个字符串s,将它分配n 次,长度为x。示例:如果 n = 7s = "ada",则最终字符串为 adaadaa。最后,统计字符串中a的个数。

我的解决方案可以在下面找到。它工作正常,除非它在 ​​n = 10000000 或更多时到达 API fatal error handler returned after process out of memory 错误。

这是为什么?如果 n=100000 工作正常,javascript 中的字符串操作会导致内存不足是怎么回事?它是否与引擎如何尝试为其提供 int 类型有关,而它应该是 long 类型?

const s = "a";
const n = 100000000;

let count = 0;
let output = "";
for (let i = 0; i < n; i++) {
if (count % s.length == 0) {
count = 0;
}
output += s[count];
count++;
}

let finalCount = 0;
let arr = output.split('');
for (let i = 0; i < arr.length; i++) {
if (arr[i] == 'a') {
finalCount++;
}
}

console.log(finalCount);

最佳答案

What is it about string operations in javascript that causes it to run out of memory?

您只是在构建一个巨大的字符串。这样的字符串需要驻留在内存中的某个地方。您的字符串太大。

您可以优化算法,使其不需要那么大的字符串(在这个特定示例中,我什至认为它也是一种简化):

const s = "a";
const n = 100000000;

let count = 0;
let finalCount = 0;
for (let i = 0; i < n; i++) {
if (count % s.length == 0) {
count = 0;
}
if (s[count] == 'a') {
finalCount++;
}
count++;
}

console.log(finalCount);

(您可以进一步优化,使其在 n 之前不需要循环,而是在 O(s.length) 中运行,但这不是必需的减少内存使用量)。

关于javascript - 字符串操作的Nodejs内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52976821/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com