解题思路:
这道题比较简单,就是直接用一个stack,依次处理输入容器中的每一个字符串,要注意的是:将string转为int,C++中函数为stoi();
class Solution {
public:
int calPoints(vector<string>& ops) {
int res = 0; //一定要初始化为0
stack<int> s;
for(auto x: ops){
if(x == "C" && !s.empty()) s.pop();
else if(x == "D" && !s.empty())
s.push(s.top() * 2);
else if(x == "+" && !s.empty()){
int tmp1 = s.top();
s.pop();
int tmp2 = tmp1;
if(!s.empty()){
tmp2 += s.top();
}
s.push(tmp1);
s.push(tmp2);
}
else s.push(stoi(x)); //需要将string转为int
}
//接下来逐个访问栈中的元素,得到总分
while(!s.empty()){
res += s.top();
s.pop();
}
return res;
}
};