LeetCode Valid Parentheses(判断括号是否匹配)

题意:给出(,[,{,),],}括号组成的字符串, 判断括号是否匹配

思路:用栈结构判断

1、如果是(,[,{,将其入栈

2、如果遇到),],},看栈是否为空、栈顶元素是否对应为(,[,{

3、将字符串遍历完后,判断栈是否为空

具体代码如下:

public class Solution
{
    private boolean isLeft(char ch) {
        switch(ch) {
            case '(':
            case '[':
            case '{':
                return true;
            default:
                return false;
        }
    }

    public boolean isValid(String s) {
        Stack<Character> chStack = new Stack<>();
        Map<Character, Character> map = new HashMap<>();
        map.put(')', '('); map.put(']', '['); map.put('}', '{');

        for (int i = 0; i < s.length(); i++) {
            if (isLeft(s.charAt(i))) {
                chStack.add(s.charAt(i));
            } else if (map.containsKey(s.charAt(i))) {
                if (chStack.isEmpty() || chStack.peek() != map.get(s.charAt(i))) return false;
                else chStack.pop();
            }
        }

        return chStack.isEmpty();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值