public static void main
(String[] args
) {
// String input = "})[]((([(]))(){";
// String input = "(}){}";
Set
<Character
> open
= new HashSet
<Character
>(Arrays.
asList('{',
'[',
'('));
ArrayList<Character> looked = new ArrayList<Character>();
int count = 0;
for (int i = 0; i < input.length(); i++) {
char e = input.charAt(i);
if (open.contains(e)) {
looked.add(e);
} else {
count += findMatch(e, looked);
}
}
}
public static int findMatch(char e, ArrayList<Character> looked) {
if (looked.size() > 0) {
char op = looked.remove(looked.size() - 1);
if ((e == '}' && op == '{') || (e == ')' && op == '(') || (e == ']' && op == '[')) {
return 1;
}
int count = findMatch(e, looked);
if (count > 0) {
return count;
} else {
looked.add(op);
return 0;
}
}
return 0;
}