题解 | #有效括号序列#

有效括号序列

http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

题目:

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

思路:

把字符串转为数组arr,创建一个辅助栈newArr。遍历arr。
1、如果栈为空,将arr[i] push进栈;
2、栈不为空,如果以下三种情况符合任意一种,就将栈顶元素移除:

  1. 栈顶为'(',且此刻遍历到的元素为')'
  2. 栈顶为'[',且此刻遍历到的元素为']'
  3. 栈顶为'{',且此刻遍历到的元素为'}'

如果都不符合这三种情况,就将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
}
牛客算法题 文章被收录于专栏

牛客算法题记录

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务