我一直在做这个 javascript 挑战,我非常接近,但有些地方不对。这是挑战:
给定一个字符串数组,其中包含三种类型的大括号:round ()、square [] 和 curly {} 你的任务是编写一个函数来检查每个字符串中的大括号是否正确匹配。如果每个字符串中的大括号匹配则打印 1 到标准输出 (console.log),如果不匹配则打印 0(每行一个结果)
我的代码是这样的:
var infoToParse = [ ")(){}", "[]({})", "([])", "{()[]}", "([)]" ];
function checkBraces(infoToParse) {
var tabChars = infoToParse;
for (i= 0; tabChars.length - 1; i+=1) {
if (tabChars[i].charAt(0) === tabChars[i].charAt(tabChars[i].length-1)){
console.log(1);
}else{
console.log(0);
}
}
}
checkBraces(infoToParse);
当前数组项的输出应该是Output: 0 1个 1个 1个 0
最佳答案
正如评论中所指出的,只有第一个和最后一个字符相同不会导致正确的解决方案。
您可以尝试以下技巧: 维护一个堆栈,每次遇到左括号,即圆形“(”、方形“[”或 curl “{”;将其插入堆栈。现在每当遇到右括号时,从堆栈中弹出一个元素。如果这两个匹配,即两者属于同一类型,然后继续直到堆栈和字符串都为空。如果在任何时候它们不匹配,则中断并返回 false。 我会为其编写代码并尽快发布。
关于javascript - 如何编写一个 javascript 函数来检查字符串中的第一个字符和最后一个字符是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31540166/