1047. 删除字符串中的所有相邻重复项
题目链接
题解:简单题,最后需要注意反转字符串即可。
class Solution {
public:
string removeDuplicates(string s) {
stack<char> z;
for(int i=0;i<s.size();i++){
if(!z.empty()){
int top=z.top();
if(top==s[i]){
z.pop();
}else{
z.push(s[i]);
}
}else{
z.push(s[i]);
}
}
string result="";
while(!z.empty()){
result+=z.top();
z.pop();
}
reverse(result.begin(),result.end());
return result;
}
};
150. 逆波兰表达式求值
题目链接
题解:只需要注意一下及时把栈顶圆元素得到并pop,然后要记得字符串的类型要转换成长整型,记住stoll函数。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<long long> z;
for(int i=0;i<tokens.size();i++){
if(tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
long long a=z.top();
z.pop();
long long b=z.top();
z.pop();
if(tokens[i]=="+") z.push(a+b);
if(tokens[i]=="-") z.push(b-a);
if(tokens[i]=="*") z.push(b*a);
if(tokens[i]=="/") z.push(b/a);
}
else{
long long num=stoll(tokens[i]);
z.push(num);
}
}
return z.top();
}
};