【发布时间】:2021-08-06 08:45:23
【问题描述】:
我有一个问题正在尝试解决。我试图在有大写字母实例的地方插入一个空格。问题是该空间被推入正确的索引,但对于所有其他出现大写字母的情况,它不会应用该空间。我对拼接方法进行了广泛的研究,但无法找到解决问题的方法。有人能指出我正确的方向吗?
function solution(string) {
let splitStr = [...string];
for(let i = 0; i < splitStr.length; i++) {
if(!splitStr[i].toUpperCase()) return
if(splitStr[i] === splitStr[i].toUpperCase()) {
let indexOfCapLetter = splitStr.indexOf(splitStr[i].toUpperCase());
splitStr.splice(indexOfCapLetter, 0, ' ' );
return splitStr
}
}
}
【问题讨论】:
-
因为
splitStr[i] === splitStr[i].toUpperCase()你插入一个空格然后返回。 -
你的逻辑也坏了。插入空格会增加后续字母的索引,因此如果您在 4 处插入空格,则该字母将移至 5,因此在下一次迭代中您再次测试相同的字母,插入另一个空格,等等。ad infinitum i> (或者直到你得到一个堆栈溢出)。因此,当您插入空格时,请额外增加 i (或从 splitStr.length 循环到零或从右到左,而不是从零循环到 splitStr.length 或从左到右)。
标签: javascript splice