leetcode第二十题(有效符号)以及栈

题目:判断符号是否有效
eg:
“([)]”—>false “()”—>true “(){}[]”—>true
思路:如果是左括号,直接入栈;如果是右括号,判断栈是否为空或看栈顶元素是否是左括号。最后检查栈是否为空。
实现代码:

public boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        char[] sc=s.toCharArray();
        for(int i=0;i<s.length();i++){
            switch(sc[i]){
                case ')':
                    if(stack.empty()||stack.pop()!='(')
                        return false;
                    break;
                case ']':
                    if(stack.empty()||stack.pop()!='[')
                        return false;
                    break;
                case '}':
                    if(stack.empty()||stack.pop()!='{')
                        return false;
                    break;
                default:
                    stack.push(sc[i]);
            }        
        }
        return stack.empty();
    }

栈:
括号问题是经典的栈的问题。
特点:先进后出,只能在一段进行操作。
可以使用的方法有:
clear():清空
isEmpty():是否为空
length():元素的个数
push(Object x):入栈
pop():出栈
display():打印(从栈顶到栈底)

Character:
是lang包里的类,可以不用声明就可以使用。
Character是类,char是基本数据类型。
在java中有三个类负责对字符的操作:Character、String、StringBuffer。其中Character是对单个字符进行操作,String是对一个字符序列进行操作,StringBuffer是对遗传字符进行操作。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值