LeetCode OJ 20 Valid Parentheses
题目描述:
Given a string containing just thecharacters '(', ')', '{', '}', '[' and ']', determine if the input string isvalid.
The brackets must close in the correctorder, "()" and "()[]{}" are all valid but "(]"and "([)]" are not.
题目理解:
给定一个带有'(', ')', '{', '}', '[' ']'的字符串,判断这些括号是否合法
题目分析:
括号是配对的,且是右括号匹配最近出现的左括号,先进后出模式,容易想到用栈来实现
我的解答:
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push('(');
else if (c == '{')
stack.push('{');
else if (c == '[')
stack.push('[');
else if (c == ')') {
if (stack.isEmpty() || stack.pop() != '(')
return false;
} else if (c == '}') {
if (stack.isEmpty() || stack.pop() != '{')
return false;
} else if (c == ']') {
if (stack.isEmpty() || stack.pop() != '[')
return false;
}
}
if (stack.isEmpty()) return true;
else return false;
}
更简洁的解答:
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}