● 20. 有效的括号
class Solution {
public:
bool isValid(string s) {
stack<char> st;
if(s.size()%2!=0) return false;
for(int i=0;i<s.size();i++){
if(s[i]=='('){
st.push(')');
}else if(s[i]=='['){
st.push(']');
}else if(s[i]=='{'){
st.push('}');
}else if(st.empty()||st.top()!=s[i]){
return false;
}else{
st.pop();
}
}
if(st.empty()){
return true;
}else{return false;}
}
};
● 1047. 删除字符串中的所有相邻重复项
class Solution {
public:
string removeDuplicates(string s) {
string st;
for(char c:s){
if(st.empty()||c!=st.back()){
st.push_back(c);
}else{
st.pop_back();
}
}
return st;
}
};
150. 逆波兰表达式求值
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> result;
for(string e : tokens){
if(e=="+"||e=="-"||e=="*"||e=="/"){
int num1 = result.top();
result.pop();
int num2 = result.top();
result.pop();
if(e=="+"){
result.push(num1+num2);
}else if(e=="-"){
result.push(num2-num1);
}else if(e=="*"){
result.push(num1*num2);
}else{
result.push(num2/num1);
}
}else{
result.push(stoi(e));
}
}
int res = result.top();
result.pop();
return res;
}
};