用Java通过栈实现简单的四则运算的运算器
// package com.threefiree.algotithm.leetcode.stack.test227; import java.net.Socket; import java.util.ArrayDeque; import java.util.Deque; /** * @author zhouyanxiang * @Date 2021-01-2021/1/27-16:03 * @Title 227. 基本计算器 II */ public class Solution { public static void main(String[] args) { Solution solution = new Solution(); String s = "3-2*2 + 10"; int calculate = solution.calculate(s); System.out.println(calculate); } public int calculate(String s) { Deque<Integer> deque = new ArrayDeque<>(); char lastOp = '+'; char[] ch = s.toCharArray(); int len = ch.length; for (int i = 0; i < len; i++) { if (ch[i] == ' ') { continue; } if (Character.isDigit(ch[i])) { int tempNum = ch[i] - '0'; while (++i < len && Character.isDigit(ch[i])) { tempNum = tempNum * 10 + (ch[i] - '0'); } i--; if (lastOp == '+') { deque.push(tempNum); } else if (lastOp == '-') { deque.push(-tempNum); } else { deque.push(op(lastOp,deque.pop(),tempNum)); } } else { lastOp = ch[i]; } } int res = 0; for (int num : deque) { res += num; } return res; } public int op(char c,int a,int b) { if (c == '+') { return a + b; } else if (c == '-') { return a - b; } else if (c == '*') { return a * b; } else { return a / b; } } }