20.有效的括号
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a37537a104dc4b478815ab18ea175278.png)
class Solution {
public:
bool isValid(string s) {
stack<char> st;
unordered_map<char,char> mp;
mp[')'] = '(';
mp['}'] = '{';
mp[']'] = '[';
for(int i = 0; i < s.size(); i++){
if(s[i] == '(' || s[i] == '{' || s[i] == '[') st.push(s[i]);
else{
if(st.empty()) return false;
char top = st.top();
st.pop();
if(mp[s[i]] != top) return false;
}
}
return st.empty();
}
};
1047.删除字符串中的所有相邻重复项
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ce9dbd1e5f84427e9ff78091bf82acc1.png)
class Solution {
public:
string removeDuplicates(string s) {
stack<char> st;
for(int i = 0; i < s.size(); i++){
if(st.empty()) st.push(s[i]);
else{
char top = st.top();
if(s[i] == top) st.pop();
else st.push(s[i]);
}
}
string res;
while(!st.empty()){
res += st.top();
st.pop();
}
reverse(res.begin(),res.end());
return res;
}
};
150.逆波兰表达式求值
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/74ba1e329c194ef08c29f2eea9f6170e.png)
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long> st;
for(int i = 0; i < tokens.size(); i++){
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/"){
long num1 = st.top();
st.pop();
long num2 = st.top();
st.pop();
if(tokens[i] == "+") st.push(num2 + num1);
if(tokens[i] == "-") st.push(num2 - num1);
if(tokens[i] == "*") st.push(num2 * num1);
if(tokens[i] == "/") st.push(num2 / num1);
}
else{
st.push(stoi(tokens[i]));
}
}
return st.top();
}
};