LeetCode之Basic Calculator II
2015-09-09 09:40
423 查看
/*用两个辅助vector来进行运算,一个存符号,一个存数字。*/ class Solution { public: int calculate(string s) { if(s.empty()) return 0; vector<char> op; vector<int> num; for(size_t i = 0; i < s.size();){ if(s[i] >= '0' && s[i] <= '9'){//遍历到数字 int tmp = 0; while(i < s.size() && s[i] >= '0' && s[i] <= '9'){ tmp = tmp * 10 + (s[i] - '0'); ++i; } if(!op.empty() && (op.back() == '*' || op.back() == '/')){ int a = num.back(); num.pop_back(); num.push_back(calculate(a, tmp, op.back())); op.pop_back(); } else num.push_back(tmp); } else if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/'){//遇到号,入栈 op.push_back(s[i]); ++i; } else ++i; } size_t j = 0; for(size_t i = 0; i < op.size(); ++i){ num[j+1] = calculate(num[j], num[j+1], op[i]); ++j; } return num.back(); } int calculate(int a, int b, char op){ if(op == '+') return a + b; else if(op == '-') return a - b; else if(op == '*') return a * b; else return a / b; } };
相关文章推荐
- mysql基本操作
- UINavigationController 返回上一级,返回根控制器,返回某一级
- TextVIew字体设置
- Python脚本后台运行的几种方式
- 西门子S7-300系列plc和紫金桥软件的通讯
- 六年软件测试感悟 (续一)
- 六年软件测试感悟 (续二)
- 图像美妆算法---自动祛斑算法研究
- hdu 确定比赛名次(拓扑排序)
- 从零单排之玩转Python安全编程(II)
- 查看ORACLE执行计划的几种常用方法
- windows 下一个mysql password忘记改变
- 2015年你需要学习的15种编程语言
- opencv:提取样本的两种方式
- HTML/CSS(四)Manifest 应用缓存 HTML5
- 六年软件测试感悟
- MJExtension的一些实用技巧
- iOS开发-------选择器(UIPickView)
- git stash的使用
- NodeJs API