注意一下:可能是负数/可能有多个数位,数字char - '0'才是数值
class Solution {
public:
int getdigit(string s){ // 是数字则返回数字, 否则返回1e5
bool f = (s[0] == '-'); // 负数标志
if(f || isdigit(s[0])){
int num = 0;
for(int i = f; i < s.length(); i ++)
num = num * 10 + s[i] - '0';
if(f) num = num * (-1);
return num;
}
return 1e5;
}
int calPoints(vector<string>& operations) {
vector<int> s(1010, 0);
int idx = -1;
for(auto v: operations){
char c = v[0];
int numfg = getdigit(v);
if(numfg != (int)1e5) //s[++ idx] = (c - '0'); // idx 指向有效的那一个元素, -1表示没有元素×
s[++ idx] = numfg;
else if(c == 'C') idx --;
else if(c == 'D'){
int t = s[idx] * 2;
s[++ idx] = t;
}else if(c == '+'){
int t = s[idx] + s[idx - 1];
s[++ idx] = t;
}
}cout << endl;
int res = 0;
for(int i = 0; i <= idx; i ++) res += s[i];
return res;
}
};