leetcode 20

leetcode 20. Valid Parentheses

误区,没有思考可能出现的情况直接动手写,果然错的很多,所有的坑都踩了一遍T.T,一定要记住教训。。。
题目中要求,就近配对出现,可知不正确的情况有:
- 奇数个括号一定错误,eg.”(”
- 先出现右括号 ‘)’,’}’,’]’,eg.”){”
- 顺序不正确,eg.”([)]”
思考后明确使用栈的思路最为简便,遇到左括号入栈,遇到对应的右括号弹栈,否则返回错误,最后栈为空则为正确。
代码如下

//不判断奇偶个数如下:(先判断一下效率更高)
    public boolean isValid(String s) {
        Stack<Character> sta = new Stack<Character>();
        for(int i = 0;i<s.length();i++){
            switch(s.charAt(i)){
            case '(':
            case '{':
            case '[':
                sta.push(s.charAt(i));break;
            case ')':
                if(!sta.isEmpty()&&sta.peek()=='(' ) {sta.pop();break;}
                else return false;  
            case ']':
                if( !sta.isEmpty()&&sta.peek()=='[') {sta.pop();break;}
                else  return false;
            case '}': 
                if( !sta.isEmpty()&&sta.peek()=='{') {sta.pop();break;}
                else return false;
            }
        }
        return sta.isEmpty();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值