【发布时间】:2021-09-19 07:40:48
【问题描述】:
我正在做一个 CodeWars kata,它根据字母的重复将单词编码为开括号或闭括号。这是link。
当单词等于“ ( ( )”时,我的代码可以处理所有测试,但只有一个测试。
我想我发现在最后一个“)”上,由于替换的匹配,第一个“(”被更改为“)”,从而改变了预期的输出。有什么方法可以防止我的输出发生这种不必要的变化?
const duplicateEncode = (word) => {
let words = word.toLowerCase();
let obj = {};
for (let i of words) {
obj[i] = obj[i] ? obj[i] + 1 : 1;
}
for (let i of words) {
obj[i] === 1
? (words = words.replace(i, "("))
: (words = words.replace(i, ")"));
}
return words;
};
预期输出
duplicateEncode(" ( ( )")); // )))))(
我的输出
duplicateEncode(" ( ( )")); // ()))))
【问题讨论】:
-
这是一种方法:jsfiddle.net/zq573vLp
-
哇,太聪明了!
标签: javascript string replace parentheses