Question
Given a string containing just the characters '(', ')', '{', '}', '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
Solution
TODO
Code
class Solution {
public boolean isValid(String s) {
Stack<Character> st = new Stack();
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if(isRight(c)) {
if(st.isEmpty() || !match(st.peek(), c)) {
return false;
}
st.pop();
}
else {
st.push(c);
}
}
return st.isEmpty();
}
public boolean isRight(char paren) {
return paren == ')' || paren == '}' || paren == ']';
}
public boolean match(char left, char right) {
return left == '(' && right == ')'
|| left == '[' && right == ']'
|| left == '{' && right == '}';
}
}
Performance
TODO