0
点赞
收藏
分享

微信扫一扫

LeetCode 150 逆波兰表达式求值 -- 栈的使用

sullay 2022-01-30 阅读 64

参考文章

思路:

挺简单的题目的,逆波兰表达式相当于二叉树中的后序遍历,这个在学习二叉树的时候就接触到了。但是这一道题没有必要从二叉树的角度去解决,题目最后都写明白了,直接用个栈就解决了。关于栈的使用可以参考《有效的括号》和《删除字符串中的所有相邻重复项》这两道题。

本题Java代码:

class Solution {
	public int evalRPN(String[] tokens) {
		Deque<Integer> deque = new LinkedList<>();
		for (String s : tokens) {
			if (s.equals("+") && deque.size() >= 2) {
				int a = deque.pollFirst();
				int b = deque.pollFirst();
				deque.offerFirst(b + a);
			} else if (s.equals("-") && deque.size() >= 2) {
				int a = deque.pollFirst();
				int b = deque.pollFirst();
				deque.offerFirst(b - a);
			} else if (s.equals("*") && deque.size() >= 2) {
				int a = deque.pollFirst();
				int b = deque.pollFirst();
				deque.offerFirst(b * a);
			} else if (s.equals("/") && deque.size() >= 2) {
				int a = deque.pollFirst();
				int b = deque.pollFirst();
				deque.offerFirst(b / a);
			} else {
				deque.offerFirst(Integer.parseInt(s));
			}
		}
		return deque.pollFirst();
	}
}
举报

相关推荐

0 条评论