leetcode Evaluate Reverse Polish Notation

来源:互联网 发布:mac调整鼠标大小 编辑:程序博客网 时间:2024/06/05 15:45

逆波兰式的求解,主要注意的问题就是,输入的是string数组,需要将表示数值的 string转化成int,然后特别要注意的是负数的转化。剩下的利用栈这一数据结构便可求解。

class Solution {public:    int evalRPN(vector<string> &tokens) {        stack<int> numstack;        int n = tokens.size();        int num1 = 0, num2 = 0;        for(int i = 0 ; i < n; i++)        {            if(tokens[i][0] <= '9' && tokens[i][0] >= '0' || tokens[i].size() > 1)            {                num1 = 0;                int m = tokens[i].size();                int k = 0;                bool isNegative = false;                if(tokens[i][0] == '-')                {                    k = 1;                    isNegative = true;                }                for(; k < m; k++)                {                    num1 = num1 * 10 + tokens[i][k] - '0';                }                if(isNegative)                    num1 = -num1;                numstack.push(num1);            }            else            {                 num1 = numstack.top();                 numstack.pop();                 num2 = numstack.top();                 numstack.pop();                 switch(tokens[i][0])                 {                 case '+':                     numstack.push(num2 + num1);                     break;                 case '-':                     numstack.push(num2 - num1);                     break;                 case '/':                     numstack.push(num2 / num1);                     break;                 default:                     numstack.push(num2 * num1);                     break;                 }            }        }        return numstack.top();    }};



0 0