[20. 有效的括号](https://leetcode.cn/problems/valid-parentheses/
class Solution {
public:
bool isValid(string s) {
if (' ' == s[0]) return true;
if (1 == s.size() % 2) return false;
stack<char> st;
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();
}
return st.empty();
}
};
class Solution {
public:
string removeDuplicates(string s) {
string ans;
for (int i = 0; i < s.size(); i++) {
if (ans.empty() || ans.back() != s[i]) {
ans.push_back(s[i]);
} else {
ans.pop_back();
}
}
return ans;
}
};
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]) {
int nums01 = st.top(); st.pop();
int nums02 = st.top(); st.pop();
if ("+" == tokens[i]) st.push(nums02 + nums01);
if ("-" == tokens[i]) st.push(nums02 - nums01);
if ("*" == tokens[i]) st.push((long)nums02 * nums01);
if ("/" == tokens[i]) st.push(nums02 / nums01);
} else {
st.push(stoi(tokens[i]));
}
}
int ans = st.top();
st.pop();
return ans;
}
};