标签:ch int top stk II num 计算器 227 sign
难度中等
给你一个字符串表达式 s
,请你实现一个基本计算器来计算并返回它的值。
整数除法仅保留整数部分。
示例 1:
输入:s = "3+2*2" 输出:7
示例 2:
输入:s = " 3/2 " 输出:1
示例 3:
输入:s = " 3+5 / 2 " 输出:5
1 class Solution { 2 public: 3 int calculate(string s) { 4 string fs = "+" + s +"+" ; 5 int num = 0; 6 char sign = '+'; 7 stack<int> stk; 8 for(int i =0;i < fs.size();i++) { 9 char ch = fs[i]; 10 if (ch==' ') continue; 11 12 if (isdigit(ch)) { 13 num = num*10 + (ch-'0'); 14 } 15 if (!isdigit(ch)){ 16 if (sign=='+') { 17 stk.push(num); 18 } else if (sign == '-') { 19 stk.push(-num); 20 } else if (sign == '*') { 21 int top = stk.top();stk.pop(); 22 stk.push(num*top); 23 } else if (sign == '/') { 24 int top = stk.top();stk.pop(); 25 stk.push(top/num); 26 } 27 sign = ch; 28 num = 0; 29 } 30 } 31 int res = 0; 32 while(!stk.empty()) { 33 res +=stk.top(); 34 stk.pop(); 35 } 36 return res; 37 } 38 };
提示:
1 <= s.length <= 3 * 105
s
由整数和算符('+', '-', '*', '/')
组成,中间由一些空格隔开s
表示一个 有效表达式- 表达式中的所有整数都是非负整数,且在范围
[0, 231 - 1]
内 - 题目数据保证答案是一个 32-bit 整数
标签:ch,int,top,stk,II,num,计算器,227,sign 来源: https://www.cnblogs.com/zle1992/p/15921131.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。