解题思路:
这道题比较简单,就是直接用一个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;
}
};
本文介绍了一种使用C++实现的游戏分数计算算法,通过解析输入的字符串操作符,利用栈进行实时分数计算,支持取消(C)、双倍(D)和求和(+)等操作,适用于游戏或竞赛计分系统。
805

被折叠的 条评论
为什么被折叠?



