题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
示例
输入: "()"
输出: true
输入: "()[]{}"
输出: true
输入: "(]"
输出: false
代码
public boolean isValid(String s) {
if (s == null || s.length() == 0 || s == "") {
return true;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char tmp = s.charAt(i);
if ((tmp == '(') || (tmp == '{') || (tmp == '[')) {
stack.push(tmp);
} else {
if (stack.isEmpty()) {
return false;
}
if ((tmp == ')' && stack.peek() == '(') ||
(tmp == ']' && stack.peek() == '[') ||
(tmp == '}' && stack.peek() == '{')) {
stack.pop();
} else {
return false;
}
}
}
return stack.isEmpty();
}
网友评论