实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式仅包含非负整数,
+
,-
,*
,/
四种运算符和空格。 整数除法仅保留整数部分。
示例 1:
输入: "3+2*2" 输出: 7示例 2:
输入: " 3/2 " 输出: 1示例 3:
输入: " 3+5 / 2 " 输出: 5用栈来处理优先级。加减号入栈,最后把栈内元素全部加起来
class Solution { public: int calculate(string s) { int n=s.size(); int ans,num; ans=num=0; stack<int>st; char op='+'; for(int i=0;i<n;i++) { if(s[i]>='0') { num=num*10+(s[i]-'0'); } if((s[i]<'0'&&s[i]!=' ')||i==n-1) { if(op=='+') st.push(num); else if(op=='-') st.push(-num); else if(op=='*') { int tmp=st.top()*num; st.pop(); st.push(tmp); } else if(op=='/') { int tmp=st.top()/num; st.pop(); st.push(tmp); } op=s[i]; num=0; } } while(!st.empty()) { ans+=st.top(); st.pop(); } return ans; } };
Leetcode 227. 基本计算器 II 栈
最新推荐文章于 2025-02-12 17:08:24 发布