Loading

LeetCode 020 Valid Parentheses

题目描述: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.

 

分析:

 

代码如下:

class Solution {
public:
    bool isValid(string s) {
        
        string left = "([{";
        string right = ")]}";
        stack<char> stk;
        
        for(auto c : s){
            
            //如果是"([{",则压入栈中
            if(left.find(c) != string::npos){
                stk.push(c);
            }
            //如果不是"([{",则匹配
            else{
                if(stk.empty() || stk.top() != left[right.find(c)])
                    return false;
                else stk.pop();
            }
        }
        
        return stk.empty();
        
    }
};

 Java:

    public boolean isValid(String s) {

        HashMap<Character, Character> map = new HashMap<Character, Character>();
        map.put('(', ')');
        map.put('[', ']');
        map.put('{', '}');

        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();

    }

 

posted @ 2015-02-07 15:56  Yano_nankai  阅读(86)  评论(0编辑  收藏  举报