有效的括号
题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
解题思路:
1:本题主要解决正确匹配括号问题,从最内层括号对开始往外看看是不是正确匹配。
2:定义一个数组(array)存储给定字符串(s)的左括号。
3:定义一个对象包含“{}”,“[]”,“()”。
4:遍历字符串(s),判断找出是左括号的依次存入数组中。不是左括号的(即是右括号),与最内层左括号匹配,不成功返回 false。最后如果数组中长度为0 则说明完全匹配成功。
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let array = [];
let obj = {
"(": ")",
"[": "]",
"{": "}"
}
for (let t of s){
if (t in obj){
array.push(t);
}
else {
if(t != obj[array.pop()]){
return false;
}
}
}
return !array.length
};
注意:如果字符串全是左括号的话那么数组 array 的长度肯定不是0,所以通过最后的 return !array.length得到 false