🚩传送门:牛客题目
题目
给出一个仅包含字符'(',')','{','}','['']的字符串,判断给出的字符串是否是合法的括号序列
示例1
输入:“[“ 返回值:false
解题思路:栈
遍历字符串,遇 ( 或 [ 或 { 入栈,否则吐出栈顶元素与当前的字符进行匹配,不匹配返回false
当遍历字符串结束后,栈空说明匹配,否则说明不匹配。
复杂度分析
时间复杂度:,其中
为字符串的长度 。
空间复杂度:,其中
为字符串的长度,最差情况所有字符全部入栈 。
官方代码
public class Solution {public boolean isValid (String s) {Stack stack=new Stack();// 遍历字符串for(int i=0;i<s.length();i++){// 遇见 ( 或 [ 或 { 入栈if(s.charAt(i)=='['||s.charAt(i)=='('||s.charAt(i)=='{')stack.push(s.charAt(i));else{// 说明此时是 ) 或 } 或 ]// 栈空说明不匹配if(stack.empty())return false;char c=(char)stack.pop();if(s.charAt(i)==']'){if(c!='[')return false;}else if(s.charAt(i)==')'){if(c!='(')return false;}else if(s.charAt(i)=='}'){if(c!='{')return false;}elsereturn false;}}// 字符串遍历完成后,栈空说明匹配成功,否则失败if(stack.empty())return true;return false;}}
