682. Baseball Game
来源:互联网 发布:桌面 知乎 编辑:程序博客网 时间:2024/04/30 02:52
题目的要求是,按照给定的字符串,计算出每个回合得到的分数,同时计算出总分,最后返回总分。计算分数的规则如下:
数字:当前回合的直接得分
C:上一回合的得分取消
D:本回合得到的分数为上一次得到的分数的两倍
+:本回合的得分为前两次得到的分数之和
解决问题的思路是:遍历给定的字符串,判断每次回合得到的分数。利用vector去存储每一回合得到的分数:
数字:入栈
C:取消上一回合得到的分数,即vector中弹出最近添加的数字,出栈
D:新入栈的元素为上一元素的两倍
+:新入栈的元素为之前两个元素之和
其中,字符串转int的函数如下:
int getNum(string& s) { int num; stringstream ss; ss << s; ss >> num; return num; }
完整的代码如下:
class Solution {public: int getNum(string& s) { int num; stringstream ss; ss << s; ss >> num; return num; } int calPoints(vector<string>& ops) { int sum = 0; vector<int> round; for (int i = 0; i < ops.size(); i++) { if (ops[i] == "C") { sum -= round.back(); round.pop_back(); } else if (ops[i] == "D") { int temp = 2 * round.back(); round.push_back(temp); sum += temp; } else if (ops[i] == "+") { int index = round.size() - 1; int temp = round[index] + round[index-1]; round.push_back(temp); sum += temp; } else { int temp = getNum(ops[i]); sum += temp; round.push_back(temp); } } return sum; }};
阅读全文
0 0
- [LeetCode] 682. Baseball Game
- leetcode 682. Baseball Game
- 682. Baseball Game
- <LeetCode>682. Baseball Game
- Leetcode. 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- 【LeetCode】682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game
- 682. Baseball Game(vector..)
- 682. Baseball Game
- 682. Baseball Game
- leetcode 682. Baseball Game
- LWC 51:682. Baseball Game
- LeetCode 682. Baseball Game (Easy)
- Baseball Game
- LeeCode- Baseball Game
- string和vector易错点
- 怎么去掉我的电脑中的微云盘符?
- ansible 自定义iventory源
- 浓墨重彩之MySQL-03-数据操作
- 排序算法
- 682. Baseball Game
- codevs 2218 补丁vs错误
- 什么是Intellij IDEA
- ajax实现图片轮番滚动
- [NOIP2017模拟]姓名匹配
- MVP中存在的内存泄漏问题
- cookie、session、token的理解
- golang基础-new_make、recover_panic、append、闭包
- Android 笔记-音乐播放器的几个关键点