题目描述: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(); }