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编辑  收藏  举报

导航