有效的括号
class Solution {
public:
bool isValid(string s) {
int count=s.size();
if(count%2!=0){
return false;
}
map<char,char> m={
{')','('},
{']','['},
{'}','{'},
};
stack<char> st;
for(char ch:s){
if(m.count(ch)){
if(st.empty()||m[ch]!=st.top()){
return false;
}
st.pop();
}
else{
st.push(ch);
}
}
return st.empty();
}
};
删除字符串中所有相邻重复项
1047. 删除字符串中的所有相邻重复项 - 力扣(Leetcode)
class Solution {
public:
string removeDuplicates(string s) {
string res;
for(char ch:s){
if(res.back()!=ch||res.empty()){
res.push_back(ch);
}
else{
res.pop_back();
}
}
return res;
}
};
逆波兰表达式求值
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(int i=0;i<tokens.size();i++){
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
long long nums1=st.top();st.pop();
long long nums2=st.top();st.pop();
if(tokens[i]=="+") st.push(nums1+nums2);
if(tokens[i]=="-") st.push(nums2-nums1);
if(tokens[i]=="*") st.push(nums1*nums2);
if(tokens[i]=="/") st.push(nums2/nums1);
}
else{
st.push(stoll(tokens[i]));
}
}
int ans=st.top();
st.pop();
return ans;
}
};