20. 有效的括号(Java)

20. 有效的括号(Java)

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
在这里插入图片描述
思路:栈的应用
使用栈时一定要考虑栈空的情况,防止溢出
左括号入栈,右括号判断栈顶是否为能与之匹配的左括号,若能则栈顶元素出栈,若不能或当前栈为空,则为不符合的序列。遍历完所有字符后若栈空,则字符串有效,否则无效

class Solution {
    public boolean isValid(String s) {
		//左括号入栈,出现一个能与其匹配的右括号就出栈,若栈空,字符串有效,否则无效
		Stack<Character> stack=new Stack<>();
		for(int i=0;i<s.length();i++) {
            
			switch(s.charAt(i)) {
			   case '(':
			   case '{':
			   case '[':
				   stack.push(s.charAt(i));
				   break;
			   case ')':
				   if(stack.isEmpty()||stack.peek()!='(')
					   return false;
                    else
                       stack.pop();
				   break;
			   case ']':
				   if(stack.isEmpty()||stack.peek()!='['){
					   return false;}
                    else
                       stack.pop();
				   break;	
			   case '}':
				   if(stack.isEmpty()||stack.peek()!='{')
					   return false;
                    else
                       stack.pop();
				   break;
			}
            //System.out.println(stack);
		}
        //System.out.println(stack);
		if(stack.isEmpty())
			return true;
		else
			return false;

    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值