题目描述
Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()" Output: true
Example 2:
Input: "()[]{}" Output: true
Example 3:
Input: "(]" Output: false
Example 4:
Input: "([)]" Output: false
Example 5:
Input: "{[]}" Output: true
题解如下:
思路:使用栈
代码如下
class Solution {
private Map<Character,Character> mappings;
public Solution(){
this.mappings = new HashMap<>();
this.mappings.put('}','{');
this.mappings.put(']','[');
this.mappings.put(')','(');
}
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if(mappings.containsKey(c)){
char topEle = stack.empty()? '#':stack.pop();
if(topEle != mappings.get(c)){
return false;
}
} else {
stack.push(c);
}
}
return stack.isEmpty();
}
}