preec网站,科技作文,百度熊掌号wordpress,龙岩市人才网最新招聘信息跟着carl学算法#xff0c;本系列博客仅做个人记录#xff0c;建议大家都去看carl本人的博客#xff0c;写的真的很好的#xff01; 代码随想录 LeetCode#xff1a;150. 逆波兰表达式求值 给你一个字符串数组 tokens #xff0c;表示一个根据 逆波兰表示法 表示的算术表… 跟着carl学算法本系列博客仅做个人记录建议大家都去看carl本人的博客写的真的很好的 代码随想录 LeetCode150. 逆波兰表达式求值 给你一个字符串数组 tokens 表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意 有效的算符为 ‘’、‘-’、’ 和 ‘/’ 。 每个操作数运算对象都可以是一个整数或者另一个表达式。 两个整数之间的除法总是 向零截断 。 表达式中不含除零运算。 输入是一个根据逆波兰表示法表示的算术表达式。 答案及所有中间计算结果可以用 32 位 整数表示。 示例 1 输入tokens [“2”,“1”,“”,“3”,“] 输出9 解释该算式转化为常见的中缀算术表达式为((2 1) * 3) 9 示例 2 输入tokens [“4”,“13”,“5”,”/“,”“] 输出6 解释该算式转化为常见的中缀算术表达式为(4 (13 / 5)) 6 示例 3 输入tokens [“10”,“6”,“9”,“3”,”“,”-11,““,”/“,””,“17”,“”,“5”,“”] 输出22 解释该算式转化为常见的中缀算术表达式为 ((10 * (6 / ((9 3) * -11))) 17) 5 ((10 * (6 / (12 * -11))) 17) 5 ((10 * (6 / -132)) 17) 5 ((10 * 0) 17) 5 (0 17) 5 17 5 22 方便人来看的是中缀表达式放假机器看到是后缀表达式也就是逆波兰表达式这种表达式不需要括号只需要按序执行即可 读到符号就从栈中弹出数字进行对应的运算否则就入栈注意从栈中弹数字进行运算时都是nums2_nums1 public int evalRPN(String[] tokens) {StackInteger stack new Stack();for(String str : tokens){if(.equals(str)){Integer num1 stack.pop();Integer num2 stack.pop();stack.push(num2 num1);}else if(-.equals(str)){Integer num1 stack.pop();Integer num2 stack.pop();stack.push(num2 - num1);}else if(*.equals(str)){Integer num1 stack.pop();Integer num2 stack.pop();stack.push(num2 * num1);}else if(/.equals(str)){Integer num1 stack.pop();Integer num2 stack.pop();stack.push(num2 / num1);}else{stack.push(Integer.valueOf(str));}}return stack.pop();}