leetcode227. Basic CalculatorII
这道题是只有四则运算但是没有括号的,因此可以利用stack来存储的,并且每次使得存储的值与符号有对应的关系,最后在栈中只剩下可以利用加法进行处理的数的,注意在i=n-1的时候到达最后的部分也是需要把数字压入栈中的而不能被忽略掉。
class Solution { public: int calculate(string s) { int res=0,num=0,n=s.size(); 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); if(op=='-') st.push(-num); if(op=='*'){ int temp=st.top()*num; //cout<<temp<<endl; st.pop(); st.push(temp); } if(op=='/'){ int temp=st.top()/num; st.pop(); st.push(temp); } op=s[i]; num=0; //cout<<st.top()<<endl; } } while(!st.empty()){ res+=st.top(); st.pop(); } return res; } };
posted on 2018-09-11 14:13 昔风不止,唯有努力生存 阅读(111) 评论(0) 编辑 收藏 举报