力扣20 有效的括号

题目要求

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
左括号必须用相同类型的右括号闭合。 
左括号必须以正确的顺序闭合。 
1 <= s.length <= 104 
s 仅由括号 '()[]{}' 组成 
使用栈实现,对括号的匹配。
import java.util.Stack;

class Solution {
    public static boolean isValid(String s) {
    	// 初始化存储字符的栈
        Stack<Character> sign = new Stack();
        // 把字符串s的第一个字符压入栈内
        sign.push(s.charAt(0));
        // 循环比较字符串s的字符是否与栈顶的字符匹配
        for (int i = 1; i < s.length(); i++){
        	//若栈为空,则将s中的第i个字符压入栈内。
        	//否则,比较栈顶字符与当前第i个字符是否满足匹配条件。
            if (!sign.empty()){
                char c = sign.peek();
                // 若满足匹配条件,则将栈顶元素弹出。
                //否则,将第i个字符压入栈。
                if ((c == '(' && s.charAt(i) == ')') || (c == '[' && s.charAt(i) == ']')
                        || (c == '{' && s.charAt(i) == '}')){
                    sign.pop();
                }else{
                    sign.push(s.charAt(i));
                }
            }
            else{
                sign.push(s.charAt(i));
            }
        }
        if (sign.empty()){
            return true;
        }
        return false;
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值