描述
给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
要求:空间复杂度 O(n),时间复杂度 O(n)
解题思路:借助辅助栈
左括号入栈,右括号和栈顶元素比较
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
for(char ch:s){
if(stk.empty()||ch=='('||ch=='['||ch=='{'){
stk.push(ch);
continue;
}
char tp=stk.top();
if(ch==')'){
if(tp=='(')
stk.pop();
else
return false;
}
else if(ch==']'){
if(tp=='[')
stk.pop();
else
return false;
}
else if(ch=='}'){
if(tp=='{')
stk.pop();
else
return false;
}
}
return stk.empty();
}
};