这种题都要设置一个符号位的变量

224. Basic Calculator

设置数值和符号两个变量,遇到左括号将数值和符号加进栈中

class Solution {
public:
int calculate(string s) {
stack<int> st;
int res = ,flag = ;
for(int i = ;i < s.size();i++){
if(s[i] >= '' && s[i] <= ''){
int num = ;
while(i < s.size() && s[i] >= '' && s[i] <= ''){
num = num* + flag * (s[i] - '');
i++;
}
res += num;
i--;
}
else if(s[i] == '+')
flag = ;
else if(s[i] == '-')
flag = -;
else if(s[i] == '('){
st.push(res);
st.push(flag);
res = ,flag = ;
}
else if(s[i] == ')'){
res *= st.top();
st.pop();
res += st.top();
st.pop();
}
}
return res;
}
};

227. Basic Calculator II

乘除法有优先级,这个时候需要将这些数值弹出

与上一题不同,这个题是把所有的结果存入进stack中

class Solution {
public:
int calculate(string s) {
long res = ,num = ;
char op = '+';
stack<int> st;
for(int i = ;i < s.size();i++){
if(s[i] >= '' && s[i] <= '')
num = num * + s[i] - '';
if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/' || i == s.size() - ){
if(op == '+')
st.push(num);
if(op == '-')
st.push(-num);
if(op == '*' || op == '/'){
int tmp = op == '*' ? st.top() * num : st.top() / num;
st.pop();
st.push(tmp);
}
op = s[i];
num = ;
}
}
while(!st.empty()){
res += st.top();
st.pop();
}
return res;
}
};

最新文章

  1. 一图搞定【实战Java高并发程序设计】
  2. 窥探Swift之函数与闭包的应用实例
  3. 用实例讲解RSA加密算法(精)
  4. Sql server 备份还原后出现&ldquo;受限制用户&rdquo;问题
  5. ASP.NET Misconfiguration: Request Validation Disabled
  6. 测试table数据 winfrom datagridview 点击标头数字排序的时候table 列类型要为数字类型
  7. HTML5中的音视频处理
  8. 理解inode
  9. 最受Web前端开发者欢迎的五大开发工具
  10. ObfuscationAttribute模糊处理
  11. 【Java】ArrayList和LinkedList的区别
  12. ThinkPHP 关联模型(二十)
  13. DDD分层架构之领域实体(基础篇)
  14. [attribute|=value]和[attribute^=value]选择器区别
  15. TensorBoard 使用和问题解决
  16. Express4.x API (四):Router (译)
  17. (1)wr703n刷openwrt智能控制--配置wifi
  18. [Deep Learning] 常用的Active functions &amp; Optimizers
  19. Head First Python-python面向对象
  20. fastdfs-nginx-module-master的一些奇怪的特点

热门文章

  1. Numpy 基础学习
  2. RabbitMQ消息队列(六)-消息任务分发与消息ACK确认机制(.Net Core版)
  3. leetcode — convert-sorted-list-to-binary-search-tree
  4. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字
  5. iOS 循环引用讲解(中)
  6. asp.net MVC NPOI导出excel通用
  7. 杭电ACM2006--求奇数的乘积
  8. Java 学习笔记 使用并发包ReentrantLock简化生产者消费者模式代码
  9. [JS设计模式]:构造函数模式(2)
  10. windows10 企业版完整激活