👨🎓作者简介:一位喜欢写作,计科专业大二菜鸟
🏡个人主页:starry陆离
🕒首发日期:2022年7月17日星期日
🌌上期文章:『牛客|每日一题』 栈的压入、弹出序列_
📚订阅专栏:『牛客刷题集锦』
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦


遍历字符串,遇到'(','{','['这三种字符的时候,将字符入栈stk;而遇到')','}',']'这三种字符的时候则让对应的匹配字符出栈。具体规则如下:
'(','{','['字符的时候将字符入栈stk')','}',']'字符的时候,则检查栈是否空,且顶元素是否为匹配元素(如{和}匹配等),如果栈空或者栈顶元素不为匹配元素则括号序列不合法import java.util.*;
public class Solution {
/**
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character>stk=new Stack<Character>();
int l=s.length();
for(int i=0;i<l;++i){
char a=s.charAt(i);
if(a=='('||a=='['||a=='{')stk.push(a);
if(a==')'){
if(stk.isEmpty()||stk.peek()!='(') return false;
stk.pop();
continue;
}
if(a==']'){
if(stk.isEmpty()||stk.peek()!='[')return false;
stk.pop();
continue;
}
if(a=='}'){
if(stk.isEmpty()||stk.peek()!='{')return false;
stk.pop();
continue;
}
}
return stk.isEmpty()?true:false;
}
}

仍然是遍历字符串,借助辅助栈
'(','[','{'这三种字符的时候则让对应的匹配字符入栈(分别对应')',']','}')'(','[','{'这三种字符时,则先判断栈是否为空或者当前字符是否与栈顶元素一样,import java.util.Stack;
public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
//使用foreach循环
for (char c : s.toCharArray()) {
if (c == '(')
stack.push(')');
else if (c == '{')
stack.push('}');
else if (c == '[')
stack.push(']');
else if (stack.isEmpty() || stack.pop() != c)
return false;
}
return stack.isEmpty();
}
}

📚订阅专栏:『牛客刷题集锦』
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦