stack
public boolean isValid(String s) {
Map<Character,Character> map = new HashMap<>();
map.put(')','(');
map.put(']','[');
map.put('}','{');
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
if(stack.isEmpty()){
stack.push(s.charAt(i));
}else{
if(stack.peek() == map.get(s.charAt(i))){
stack.pop();
}else{
stack.push(s.charAt(i));
}
}
}
return stack.isEmpty();
}