本题的题目其实挺长但是就本质上而言是熟悉对栈的入栈出栈进行的一种操作,如push_back和pop_back和stoi等
代码如下
class Solution {
public:
int calPoints(vector<string>& operations) {
int res=0;
vector<int> ns;
for(auto op:operations){
int n = ns.size();
switch(op[0]){//本题的特殊要求是一个操作符,所以要对字符串数组进行提取
case '+':
ns.push_back(ns[n-1]+ns[n-2]);
res+=ns[n];
break;
case 'D':
ns.push_back(ns[n-1]*2);
res+=ns[n];
break;
case 'C':
res-=ns[n-1];
ns.pop_back();
break;
default:
ns.push_back(stoi(op));
res+=stoi(op);
break;
}
}
return res;
}
};