LeetCode -- 150. 逆波兰式表达式求值
程序员文章站
2022-04-04 09:52:30
...
概念:可以用平常习惯的中缀表达式画出语法树,前序遍历语法树就得到前缀表达式,也叫波兰式。后序遍历语法树就得到后缀表达式,也叫逆波兰式。
后缀表达式(逆波兰式):ABCD-x+EFx-
解题思路:通过栈解。
当遇到符号时,从栈中pop出两个数字计算,否则将数字进栈。
public int evalRPN(String[] tokens){
Stack<Integer> stack = new Stack<>();
for (String s:tokens) {
if (s.equals("+"))
stack.push(stack.pop() + stack.pop());
else if (s.equals("-"))
stack.push(- stack.pop() + stack.pop());
else if (s.equals("*"))
stack.push(stack.pop() * stack.pop());
else if (s.equals("/")) {
int num1 = stack.pop();
stack.push(stack.pop() / num1);
}else
stack.push(Integer.parseInt(s));
}
return stack.pop();
}
下一篇: Hive修改数据表