我构建了一个函数,它根据一些输入返回 "YES"
或 "NO"
。
输入是一串应该平衡的括号。
例子:
平衡 - { [ ( ) ] }
非平衡 - { [ ( ] ) }
该函数为此调用返回 undefined
。
isBalanced('{[(])}');
厌倦了调试。我确定循环内部有问题。
function isBalanced(s) {
let brackets = s.split('');
let balanced = "YES";
const closedBrackets = ')]}';
const bracketCompliment = {
'(' : ')',
'[' : ']',
'{' : '}'
};
for(let idx = 0; idx < brackets.length; idx++){
const item = brackets.splice(0, 1)[0];
if(closedBrackets.includes(item)){
balanced = "NO";
return;
}
const closeIdx = brackets.indexOf(bracketCompliment[item]);
const remainder = closeIdx % 2;
if(closeIdx === -1 || remainder !== 0){
balanced = "NO";
return;
} else{
brackets.splice(closeIdx, 1);
}
}
return balanced;
}
最佳答案
你应该return balanced;
而不是return;
function isBalanced(s) {
let brackets = s.split('');
const closedBrackets = ')]}';
const bracketCompliment = {
'(': ')',
'[': ']',
'{': '}',
};
for (let idx = 0; idx < brackets.length; idx += 1) {
const item = brackets.splice(0, 1)[0];
if (closedBrackets.includes(item)) {
return 'NO';
}
const closeIdx = brackets.indexOf(bracketCompliment[item]);
if (closeIdx === -1 || closeIdx % 2 !== 0) {
return 'NO';
}
brackets.splice(closeIdx, 1);
}
return 'YES';
}
console.log(isBalanced('{[(])}'));
console.log(isBalanced('{()}'));
关于JavaScript循环神秘地更新字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51951985/