有效的括号 力扣20
一、题目
二、思路
这题算是栈的经典应用。
主要有三种情况:
第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false
第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false
第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false
三、代码
class Solution {
public boolean isValid(String s) {
//这种就是典型的栈问题
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()){
// 1.如果这里栈为空说明,没有可以匹配的左括号
//栈顶有对应的左括号就出栈模拟匹配
if(c == ')' && !stack.isEmpty() && stack.peek() == '(')
stack.pop();
else if(c == '}' && !stack.isEmpty() && stack.peek() == '{')
stack.pop();
else if(c == ']' && !stack.isEmpty() && stack.peek() == '[')
stack.pop();
else
stack.push(c);// 发现是左括号就入栈
}
return stack.isEmpty(); //2.如果栈为空,说明所有括号都能匹配上,否则就返回false
}
}