括号序列压入栈中,遇到匹配的出栈,最后判断栈是否为空
直接使用栈的数据结构stack。
class Solution {
public:
bool isValid(string s) {
stack<char> stk;//初始化栈
for(auto c : s){
//入栈
if(c=='(' || c=='[' || c=='{') stk.push(c);
else{
//根据ascii码确定每对括号之间的差值
if(stk.size() && abs(stk.top()-c)<=2)
stk.pop();
else return false;//不匹配,无效序列
}
}
return stk.empty();//若最终栈为空,则为有效序列
}
};
ps:
- 两两配对,先判断字符串长度为偶数,否则跳出
- 可用哈希表或数组,保存对括号:unordered_map哈希表