package Stack_Queue; import java.util.Deque; import java.util.LinkedList; /** * 实现基本的计算器 * + - * / 没有括号 */ public class BasicCalculator_225 { /** * 先计算乘除,再计算加减 * 将乘除计算出来的结果,放回原先位置,最后计算一系列值的加法 * 比如 2+3*4 ---> +2+3*4 * 遍历字符串 s,并用变量 preSign记录每个数字之前的运算符, * 对于第一个数字,其之前的运算符视为加号。每次遍历到数字末尾时,根据 preSign来决定计算方式: * 加号:入栈 * 减号:相反数入栈 * 乘除:计算数字与栈顶元素,并将栈顶元素替换为计算结果 * */ public static int calculateFast(String s){ if(s==null||s.length()==0) return 0; char preSign='+'; int num=0; int len=s.length(); Deque stack=new LinkedList<>(); for(int i=0;i dataStack=new LinkedList<>(); Deque opeStack=new LinkedList<>(); int i=0; int len=s.length(); while (i