题解 | #有效括号序列#
有效括号序列
http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
题目:
给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。
思路:
把字符串转为数组arr,创建一个辅助栈newArr。遍历arr。
1、如果栈为空,将arr[i] push进栈;
2、栈不为空,如果以下三种情况符合任意一种,就将栈顶元素移除:
- 栈顶为'(',且此刻遍历到的元素为')'
- 栈顶为'[',且此刻遍历到的元素为']'
- 栈顶为'{',且此刻遍历到的元素为'}'
如果都不符合这三种情况,就将arr[i] push 入栈;
3、 最后如果栈为空,则true;否则false
function isValid( s ) {
// write code here
let arr = s.split('')
let newArr = [];
for(let i = 0; i < arr.length; i++){
if(newArr.length === 0){
newArr.push(arr[i]);
}else{
if(newArr[newArr.length-1] === '(' && arr[i] === ')'
|| newArr[newArr.length-1] === '[' && arr[i] === ']'
|| newArr[newArr.length-1] === '{' && arr[i] === '}'
){
newArr.pop()
}else{
newArr.push(arr[i])
}
}
}
return !newArr.length
}
牛客算法题 文章被收录于专栏
牛客算法题记录