栈的应用-括号匹配
实现
例如字符串“{[()]}”
将左括号依次压栈 { [ (
当走到第一个右括号)时,和当前栈顶元素比较,如不匹配, 则不是一个合法的字符串。若匹配,则将当前栈顶元素弹出。 继续判断下一个右括号] , 直到栈为空
class Solution{
public boolean isValid(String s){
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(stack.isEmpty()) {
return false;
}
char topChar = stack.pop();
if(c == ')' && topChar != '('){
return false;
}
if(c == ']' && topChar != '['){
return false;
}
if(c == '}' && topChar != '{'){
return false;
}
}
return stack.isEmpty();
}
}
}