有效的括号题解
题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
解题思路
用一个辅助栈来存储括号,每当遍历到的括号为反括号的时候,将栈顶括号弹出看是否与反括号匹配,如果匹配就消除这两个括号。不匹配则直接返回false
。同时每次遍历到反括号也要看看栈中元素是否为空,为空和不匹配一样返回false
。
代码实现
class Solution {
//装括号的栈
Stack<Character> stack = new Stack<>();
public boolean isValid(String s) {
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
if(chars[i] == ')' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '('){
return false;
}
}
else if(chars[i] == ']' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '['){
return false;
}
}else if(chars[i] == '}' && !stack.isEmpty()){
char temp = stack.pop();
if(temp != '{'){
return false;
}
}else {
stack.push(chars[i]);
}
}
return stack.isEmpty()? true : false;
}
}