【发布时间】:2022-01-20 18:51:28
【问题描述】:
我有以下问题陈述:
编写一个函数,解压缩,它接受一个字符串作为参数。 输入字符串将根据以下格式格式化为多个组 以下模式:
数字 + 字符
例如,“2c”或“3a”。
该函数应返回未压缩版本的字符串,其中 组中的每个 'char' 连续重复 'number' 次。你 可以假设输入字符串根据 前面提到的模式。
test_00: uncompress("2c3a1t"); // -> 'ccaaat'
这是我使用堆栈的代码。问题是它只返回'cc',我不知道为什么。我已经在控制台记录了进入 IF ELSE 的内容,并且我同时击中了两者,所以我不明白为什么没有任何东西被推入堆栈。
如果有人能发现我遗漏的东西,我将不胜感激。
const uncompress = (s) => {
const nums = '23456789';
const stack = [];
for (let char of s) {
if (nums.includes(char)) {
stack.push(Number(char));
} else {
const num = stack.pop();
stack.push(char.repeat(num));
};
};
return stack.join('');
};
console.log(uncompress("2c3a1t")); // -> 'ccaaat'
【问题讨论】:
-
我添加了一个 sn-p;如果您可以添加显示输入和预期输出的示例以及函数输出的内容,那将会很有帮助。例如,
console.log(uncompress('2c3a1t')); // 'ccaaat'. -
感谢您的反馈!我刚刚修改了问题。
-
您的代码应该没问题,您只是在您的
nums中缺少1;
标签: javascript arrays string