public boolean isValid(String s) {
Map<Character, Character> map = new HashMap<Character, Character>(){
{
put('(', ')');
put('[', ']');
put('{', '}');
}
};
Stack<Character> stack = new Stack<>();
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case '(': case '[': case '{':
stack.push(arr[i]);
break;
case ')': case ']': case '}':
if (stack.isEmpty() || arr[i] != map.get(stack.pop())) {
return false;
}
}
}
return stack.isEmpty();
}