一. 串的查找
二. 串的匹配
1. 有效的括号(栈)
栈
class Solution {
public:
bool isValid(string s) {
unordered_map<char,char> m;
m[')']='(';
m[']']='[';
m['}']='{';
stack<char> stack_;
for(auto c:s){
if(c=='('||c=='['||c=='{')
stack_.push(c);
else if(stack_.empty()||m[c]!=stack_.top())
return false;
else stack_.pop();
}
if(stack_.empty()) return true;
return false;
}
};
2. 删除最外层括号(栈)
栈
class Solution {
public:
string removeOuterParentheses(string s) {
string res;
stack<char> st;//使用栈来判断是否是最外层,最外层抵消后会使得栈为空
for (auto c : s) {
if (c == ')')
st.pop();//右括号抵消一个左括号
if (!st.empty())
res.push_back(c);//抵消后栈不为空说明不是最外层,加入结果
if (c == '(')
st.emplace(c);//左括号入栈
}
return res;
}
};
三. 串的模拟操作