LeetCode - Evaluate Reverse Polish Notation
2014-09-13 16:24
357 查看
题意
计算逆波兰表达式。
思路
用栈。 如果是数字就进栈,遇到运算符取出两个栈里的东西,算完以后进栈。最后留下一个元素在栈里。
注意处理负号。。。
代码
class Solution {
stack<int> stk;
public:
int evalRPN(vector<string> &tokens)
{
vector<string>::iterator it;
for (it = tokens.begin(); it != tokens.end(); it++)
{
string tmp = *it;
if (isdigit(tmp[0]) || (tmp[0] == '-' && tmp.size() != 1)) stk.push(Convert(tmp));
else
{
int b = stk.top(); stk.pop();
int a = stk.top(); stk.pop();
int c;
if (tmp[0] == '+') c = a + b;
else if(tmp[0] == '-') c = a - b;
else if (tmp[0] == '*') c = a * b;
else c = a / b;
stk.push(c);
}
}
return stk.top();
}
int Convert(string str);
};
int Solution::Convert(string str)
{
int ans = 0, sig = 1;
if (str[0] == '-') sig = -1;
for (int i = 0; i < str.size(); i++)
if (isdigit(str[i])) ans = ans * 10 + str[i] - '0';
return ans * sig;
}
相关文章推荐
- [LeetCode] Evaluate Reverse Polish Notation
- LeetCode 150. Evaluate Reverse Polish Notation
- [LeetCode]150. Evaluate Reverse Polish Notation
- LeetCode:Evaluate Reverse Polish Notation (Java)
- leetcode--evaluate-reverse-polish-notation
- LeetCode-Evaluate Reverse Polish Notation
- leetcode笔记:Evaluate Reverse Polish Notation(逆波兰式的计算)
- LeetCode第一题:Evaluate Reverse Polish Notation
- Java for LeetCode 150 Evaluate Reverse Polish Notation
- LeetCode(150) Evaluate Reverse Polish Notation
- Leetcode刷题记——150. Evaluate Reverse Polish Notation(计算逆波兰表达式)
- (leetcode)Evaluate Reverse Polish Notation
- leetcode 150.Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation, Solution
- Leetcode 之Evaluate Reverse Polish Notation(41)
- leetcode-Evaluate Reverse Polish Notation
- 【LeetCode】Evaluate Reverse Polish Notation
- LeetCode | Evaluate Reverse Polish Notation
- leetcode_2 Evaluate Reverse Polish Notation 逆波兰表达式
- LeetCode之EvaluateReversePolishNotation