class Solution {
public:
int calPoints(vector<string>& ops) {
stack<int>s;
int all = 0;
for(int i = 0;i<ops.size();i++)
{
if(ops[i] == "C")
{
int t = s.top();
s.pop();
}
else if(ops[i] == "D")
{
int t = s.top();
s.push(2*t);
}
else if(ops[i] == "+")
{
int t1= s.top();
s.pop();
int t2 = s.top();
s.pop();
int t3 = t1+t2;
s.push(t2);
s.push(t1);
s.push(t3);
}
else
{
int t = getNum(ops[i]);
s.push(t);
}
}
while(!s.empty())
{
int t= s.top();
all+=t;
s.pop();
}
return all;
}
int getNum(string s)
{
int num = 0;
int flag = 0;
int i = 0;
if(s[0] == '-')
{
flag = 1;
i = 1;
}
for(;i<s.size();i++)
{
num = num*10 + s[i]-'0';
}
if(flag) num = -num;
return num;
}
};