Evaluate Reverse Polish Notation
定义一个队栈,每次出现一个数放进栈中,若出现运算符的话,就将栈顶的两个元素出栈进行运算后在放入栈
考虑特殊情况
1.只有一个数字的时候
2.出现负数的情况
class Solution { public: int evalRPN(vector<string> &tokens) { // if(tokens.size()==1) return tokens[0]; stack<int>S; for(int i=0; i<tokens.size(); i++) { if(!(tokens[i][0]>=0 && tokens[i][0]<=9)) { if((tokens[i][0]>='0' && tokens[i][0]<='9')) { int n; sscanf(tokens[i],"%d",&n); S.push(n); } else if(!(tokens[i][0]>='0' && tokens[i][0]<='9') && (tokens[i][1]>='0' && tokens[i][1]<='9')) { int n; sscanf(tokens[i],"%d",&n); S.push(n); } else { int n,m; m=S.top();S.pop(); n=S.top();S.pop(); switch(tokens[i][0]) { case '+':S.push(m+n);break; case '-':S.push(n-m);break; case '*':S.push(n*m);break; case '/':S.push(n/m);break; } } } } return S.top(); } };