棧的應用2--通用括號平衡

上節我們實現了圓括號的匹配

但實際上我們可以實現任意多種括號的匹配。

考慮這樣的匹配   {[](){}[]()}   。我們只需要在彈出棧的時候判斷一下對應關係即可    

/*
	通用括號匹配
*/
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("{{}{[]()}}"));


發佈了88 篇原創文章 · 獲贊 37 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章