leetcode29( 有效的括号)
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
思路:将待匹配的左侧符号入栈,遇到右侧符号时弹出匹配,如果匹配失败立刻返回false
如果遍历结束,依然有左侧符号未被弹出,返回false
长为0和1的单独处理
class Solution {public boolean isValid(String s) {if(s == null || s.length() == 0) return true;if(s.length()==1) return false;Stack<Character> stack = new Stack<>();for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == '(' || c == '{' || c == '[') {stack.push(c);}else if (c == ')' ) {if (stack.isEmpty()) {return false;}else {char top = stack.pop();if (top != '(') {return false;}}}else if (c == '}' ) {if (stack.isEmpty()) {return false;}else {char top = stack.pop();if (top != '{') {return false;}}}else if (c == ']' ) {if (stack.isEmpty()) {return false;}else {char top = stack.pop();if (top != '[') {return false;}}}}if(stack.isEmpty()) return true;return false;}
}