leetcode20

    解题思路:
    用栈来存储未匹配的左括号,从左到右依次遍历字符串,当遇到左括号时,则将其压入栈中,若是某个右括号,从栈顶取出一个左括号,如果能够与这个右括号匹配,则继续遍历,如果不能够匹配,或者栈中没有元素,则说明是无效的字符串,当遍历完成之后,如果栈为空,则是有效字符串,否则是无效的字符串。

    1. var isValid = function(s) {
    2. let map = {
    3. '(':')',
    4. '{':'}',
    5. '[':']'
    6. }
    7. let stack = [];
    8. for(let v of s){
    9. if(map[v]){
    10. stack.push(v);
    11. }else if(map[stack.pop()]!== v){
    12. return false
    13. }
    14. }
    15. return stack.length === 0;
    16. };
    17. // 时间复杂度 o(n)
    18. // 空间复杂度 o(n)