LeetCode_20---Valid Parentheses

Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

翻译:

    Code:



    import java.util.HashMap;
    import java.util.Stack;
    
    /**
     * @author MohnSnow
     * @time 2015年6月5日 下午3:36:49
     * 
     */
    public class LeetCode20 {
    
    	/**
    	 * @param argsmengdx
    	 *            -fnst
    	 */
    	//288msA---没有前五行的时候316ms
    	public static boolean isValid(String s) {
    		int len = s.length();
    		if (len == 0)
    			return true;
    		if (len % 2 != 0)
    			return false;
    		HashMap<Character, Character> map = new HashMap<Character, Character>();
    		map.put('(', ')');
    		map.put('[', ']');
    		map.put('{', '}');
    		System.out.println(map.keySet().toString());
    		Stack<Character> stack = new Stack<Character>();
    		for (int i = 0; i < s.length(); i++) {
    			char curr = s.charAt(i);
    			if (map.keySet().contains(curr)) {
    				stack.push(curr);
    			} else if (map.values().contains(curr)) {
    				if (!stack.empty() && map.get(stack.peek()) == curr) {
    					stack.pop();
    				} else {
    					return false;
    				}
    			}
    		}
    		return stack.empty();
    	}
    
    	public static void main(String[] args) {
    		String s = "{}{}[][][]{}]}[{[()())()))(()";
    		System.out.println(isValid(s));
    	}
    }
    


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值