2022-8-6 剑指offer-栈模拟()-其他
2022-8-6 剑指offer-栈模拟()
剑指 Offer II 036. 后缀表达式
根据 逆波兰表示法,求该后缀表达式的计算结果。
有效的算符包括 、、、 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
+
-
*
/
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
1 import java.util.ArrayDeque;
2 import java.util.Stack;
3
4 /*
5 小美开的西点屋举办一周年活动,她准备制作一批礼盒作为对消费者的回馈,每个礼盒中都有三枚西点屋的招牌点心。
6 西点屋共有A和B两种招牌点心,为了让消费者都能品尝到两种点心,因此每个礼盒中都要包含至少一枚A点心和一枚B点心。
7 现在小美的西点屋内共有x枚A点心和y枚B点心,请问小美最多可以制作多少个礼盒。
8 */
9 class Solution {
10
11 public int evalRPN(String[] tokens) {
12 // Flower Cao啵啵
13 ArrayDeque<Integer> deque=new ArrayDeque<>();
14 for (String s : tokens) {
15 if ("+".equals(s)) {
16 deque.push(deque.pop() + deque.pop());
17 } else if ("-".equals(s)) {
18 int a = deque.pop();
19 int b = deque.pop();
20 deque.push(b - a);
21 } else if ("*".equals(s)) {
22 deque.push(deque.pop() * deque.pop());
23 } else if ("/".equals(s)) {
24 int a = deque.pop();
25 int b = deque.pop();
26 deque.push(b / a);
27 } else {
28 deque.push(Integer.valueOf(s));
29 }
30 }
31 return deque.pop();
32 }
33 public static void main(String[] args) {
34
35 }
36 }
思路:遇到符号计算前两个数字 放入栈中。
————————
剑指 Offer II 036. 后缀表达式
根据 逆波兰表示法,求该后缀表达式的计算结果。
有效的算符包括 、、、 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
+
-
*
/
说明:
- 整数除法只保留整数部分。
- 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
1 import java.util.ArrayDeque;
2 import java.util.Stack;
3
4 /*
5 小美开的西点屋举办一周年活动,她准备制作一批礼盒作为对消费者的回馈,每个礼盒中都有三枚西点屋的招牌点心。
6 西点屋共有A和B两种招牌点心,为了让消费者都能品尝到两种点心,因此每个礼盒中都要包含至少一枚A点心和一枚B点心。
7 现在小美的西点屋内共有x枚A点心和y枚B点心,请问小美最多可以制作多少个礼盒。
8 */
9 class Solution {
10
11 public int evalRPN(String[] tokens) {
12 // Flower Cao啵啵
13 ArrayDeque<Integer> deque=new ArrayDeque<>();
14 for (String s : tokens) {
15 if ("+".equals(s)) {
16 deque.push(deque.pop() + deque.pop());
17 } else if ("-".equals(s)) {
18 int a = deque.pop();
19 int b = deque.pop();
20 deque.push(b - a);
21 } else if ("*".equals(s)) {
22 deque.push(deque.pop() * deque.pop());
23 } else if ("/".equals(s)) {
24 int a = deque.pop();
25 int b = deque.pop();
26 deque.push(b / a);
27 } else {
28 deque.push(Integer.valueOf(s));
29 }
30 }
31 return deque.pop();
32 }
33 public static void main(String[] args) {
34
35 }
36 }
思路:遇到符号计算前两个数字 放入栈中。