Given a string containing just the characters '(', ')', '{', '}', '['
and ']'
, determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1
Input: "()"
Output: true
Example 2
Input: "()[]{}"
Output: true
Example 3
Input: "(]"
Output: false
Example 4
Input: "([)]"
Output: false
Example 5
Input: "{[]}"
Output: true
Solution1
public class Solution1 {
public boolean isValid(String s) {
if (s == null || s.length() == 0) return true;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c2 = s.charAt(i);
if (!stack.empty()) {
char c1 = stack.peek();
if (isPair(c1, c2)) {
stack.pop();
} else {
stack.push(c2);
}
} else {
stack.push(c2);
}
}
return stack.empty();
}
public static boolean isPair(char c1, char c2) {
if (c1 == '(' && c2 == ')') return true;
if (c1 == '{' && c2 == '}') return true;
if (c1 == '[' && c2 == ']') return true;
return false;
}
}