判断括号
-
判断由"()[]{}"6种括号组成的字符串是否合法
- 所有括号必须闭合
- 左括号必须在正确的位置闭合
-
主要思想是利用栈推入左半边括号,然后判断右半边括号是否在字符串剩余部分出现。
-
用键值对的方式去判断是否包含左右括号。
function IsValid(string) {
let str = string;
let map = {
'(': -1,
')': 1,
'[': -2,
']': 2,
'{': -3,
'}': 3
};
let stack = [];
let sum = 0;
for(let i = 0; i < str.length; i++) {
var temp = str.charAt(i);
let stackLen = stack.length;
if(map[temp] < 0) { // 只有左括号和左右括号都有
stack.push(temp); // 推入括号
} else if(stackLen > 0 && (map[stackLen - 1] !== -map[temp])) {
stack.pop();
}
if(map[temp]) { // 只有右括号和没有括号
sum += map[temp];
}
}
if(stack.length === 0 && sum === 0) {
return true;
} else {
return false;
}
}