import java.util.Deque; import java.util.ArrayDeque; class Solution { public boolean isValid(String s) { if (s.length() == 0) { return true; } boolean ret = false; Deque stack = new ArrayDeque(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '(' || c == '{' || c == '[') { stack.addFirst(c); } else { if (stack.isEmpty()) { break; } char p = stack.removeFirst(); if (!(c == ')' && p == '(') && !(c == ']' && p == '[') && !(c == '}' && p == '{')) { break; } if (i == s.length() - 1 && stack.isEmpty()) { ret = true; } } } return ret; } }