LeetCode 热题 HOT 100 - 20.有效的括号

思路:

判断括号的有效性可以使用「栈」这一数据结构来解决。

先出现的左括号后匹配——先进后出用栈!

此题,把左括号加入栈,匹配的过程就是出栈的过程。

代码实现:1定义辅助函数判断一对符号是否匹配 

                  2核心函数:字符串空返回真;遍历字符串,如果是右括号的情况,判断栈顶是否是匹配的左括号,匹配成功则出栈;如果是左括号,入栈等待匹配;最后,完全匹配的要求是栈为空。

class Solution {
    public boolean isValid(String s) {
        if(s.length() % 2==0){
            Map<Character,Character> pairs = new HashMap<Character,Character>();
            pairs.put(')','(');
            pairs.put('}','{');
            pairs.put(']','[');

            LinkedList<Character> stack = new LinkedList<Character>();
            for(int i=0;i<s.length();i++){
                char ch = s.charAt(i);
                if(pairs.containsKey(ch)){
                    if(stack.isEmpty()||stack.peek()!=pairs.get(ch)){
                        return false;
                    }
                    stack.pop();
                }else{
                    stack.push(ch);
                }
            }
            return stack.isEmpty();
        }
        return false;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值