上節我們實現了圓括號的匹配
但實際上我們可以實現任意多種括號的匹配。
考慮這樣的匹配 {[](){}[]()} 。我們只需要在彈出棧的時候判斷一下對應關係即可
/*
通用括號匹配
*/
function generalBracketBalanced(str) {
var stack = new Stack();
var types = {
"(": ")",
"[": "]",
"{": "}"
};
var temp = "";
for(var i=0; i<str.length; ++i) {
if(str[i] in types) {
stack.push(str[i]);
} else {
temp = stack.pop();
if(types[temp] != str[i]) {
return false;
}
}
}
return stack.isEmpty();
}
console.log(generalBracketBalanced("[]{}()[(){}]"));
console.log(generalBracketBalanced("[[]{}()[(){}]"))
console.log(generalBracketBalanced("{{}{[]()}}"));