JS 括号序列
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
思路:入栈和出栈
原来字符串s如果为左括号“(、[、{”,则转换为相应的右括号入栈(push()),如果s是右括号,则将栈中元素弹出,比较是否相同,如果栈为空或不相同则返回false,如果相同则取出,继续下一个。
代码:
function isValid( s ) {
// write code here
var stack = [];
for(var i=0;i<s.length;i++){
//如果是左括号,就把他们对应的右括号压栈
if(s[i]=='('){
stack.push(')');
}else if(s[i]=='['){
stack.push(']')
}else if(s[i]=='{'){
stack.push('}')
}else if(stack.length==0||s[i]!=stack.pop()){
//如果栈为空 无法匹配
//如果栈不为空,栈顶元素就要出栈,和这个右括号比较
//如果栈顶元素不等于这个右括号,说明无法匹配
//返回false
return false;
}
}
return stack.length<=0;
}
module.exports = {
isValid : isValid
};