LeetCode-20.有效的括号-创新互联

题目链接

https://leetcode.cn/problems/valid-parentheses/

创新互联建站是专业的新巴尔虎左网站建设公司,新巴尔虎左接单;提供网站设计制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行新巴尔虎左网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!题目描述

在这里插入图片描述

题解 题解1

首先这个字符串里只会包含括号,不会有其他的东西
其次,匹配的括号一定成对,但是不一定都是首尾呼应的,比如()[]{}如果我们使用双指针前后遍历是通不过的
所以,使用栈最合适,某个左括号压入栈后,最近的应该与其匹配的括号一定是在栈顶的
比如:({})
碰到:(,压入
碰到:[,压入
碰到:],弹出[,匹配
碰到:(,压入
碰到:),弹出(,匹配
碰到:{,压入
碰到:},弹出{,匹配
碰到:),弹出(,匹配

public boolean isValid(String s) {

        // 定义一个栈
        LinkedListstack = new LinkedList<>();

        // 遍历字符串
        for (int i = 0; i< s.length(); i++) {
            char c = s.charAt(i);

            if (c == '(') {
                stack.push(')');
            } else if (c == '[') {
                stack.push(']');
            } else if (c == '{') {
                stack.push('}');
            } else {
                if (stack.isEmpty() || stack.pop() != c)
                    return false;
            }
        }

        return stack.isEmpty();

    }
题解2

当然,如果题解1看着难看,也可以看看题解2,思路基本上是一样的

public boolean isValid(String s) {

        Mapmap = new HashMap<>();
        map.put(')', '(');
        map.put(']', '[');
        map.put('}', '{');

        LinkedListstack = new LinkedList<>();

        // 遍历字符串
        for (int i = 0; i< s.length(); i++) {
            char c = s.charAt(i);

            // 如果都是右括号,弹出栈元素进行比较
            if (c == ')' || c == ']' || c == '}') {
                if (stack.isEmpty() || stack.pop() != map.get(c))
                    return false;
            } else {
                // 如果都是左括号,把元素压入栈
                stack.push(c);
            }
        }

        return stack.isEmpty();
    }

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站名称:LeetCode-20.有效的括号-创新互联
网站网址:http://azwzsj.com/article/dooche.html