逆波兰表达式,用栈即可。
class Solution { public: int evalRPN(vector<string> &tokens) { stack<int>st; for(int i = 0;i < tokens.size();i++) { if(tokens[i] == "+" || tokens[i] == "-"|| tokens[i] == "<em>" || tokens[i] == "/") { int num1 = st.top(); st.pop(); int num2 = st.top(); st.pop(); if(tokens[i] == "+") { st.push(num1+num2); } else if(tokens[i] == "-") { st.push(num2-num1); } else if(tokens[i] == "</em>") { st.push(num1<em>num2); } else if(tokens[i] == "/") { st.push(num2/num1); } } else { st.push(genNum(tokens[i])); } } return st.top(); } private: int genNum(string s) { int flag = 1; if(s[0] == '-') { flag = -1; s = string(s,1); } int num = 0; for(int i = s.length()-1;i >= 0;i--) { num += (s[i] - '0')</em>(int)pow(10.0,(int)s.length()-1-i); } return num*flag; } };