/*
看的答案,设置一个符号变量记录这个数前边的符号是什么,不同的符号进行不同的操作。这点自己想到了。
没想到的是由于乘除相当于一个优先级高的线程,所以要先处理,还有存取前一个乘数或者分子,应该怎么办。
答案用的是stack,利用先进后出的特点,当是乘除法时pop出前一个数,处理完乘除后再存取。
所以,以后遇到经常遇到前一个数值且不能在此次循环中及时处理时,可以用stack存取。
这里不能及时处理比如此题中处理完一连串乘除后才能加到最后结果上。虽然可以用list,但是应该比较麻烦
*/
//第一个数前边的符号默认是+
char sign = '+';
int res = 0;
//定义stack
Stack<Integer> stack = new Stack<>();
int l = s.length();
//可能有多位数,作为临时变量
int num = 0;
for (int i = 0;i < l;i++)
{
char c = s.charAt(i);
//这位是数的情况,如果连续式数,那么要把所有数组合为一个数
if (Character.isDigit(c))
{
//提取数字char真值的方法(不是char的ascii码):c - '0';
num = num*10 + c-'0';
}
//这一位是符号的情况,注意如果是最后一位那么也要处理,因为逻辑是遇到符号才计算前边的数,但是后一位后边没有符号
if (!Character.isDigit(c) && c != ' ' || i == l-1)
{
//根据这个数前边的符号进行不同操作
if (sign == '+')
stack.push(num);
if (sign == '-')
stack.push(-num);
if (sign == '*')
stack.push(stack.pop()*num);
if (sign == '/')
stack.push(stack.pop()/num);
num = 0;
//记录下这个符号,作为下一个数前边的符号
sign = c;
}
//空格跳过,不做任何操作
}
for (int n:stack)
res += n;
return res;

Q227 Basic Calculator II的更多相关文章

  1. Basic Calculator,Basic Calculator II

    一.Basic Calculator Total Accepted: 18480 Total Submissions: 94750 Difficulty: Medium Implement a bas ...

  2. leetcode 224. Basic Calculator 、227. Basic Calculator II

    这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...

  3. 【LeetCode】227. Basic Calculator II

    Basic Calculator II Implement a basic calculator to evaluate a simple expression string. The express ...

  4. [LeetCode] Basic Calculator & Basic Calculator II

    Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...

  5. LeetCode OJ Basic Calculator II

    Basic Calculator II 题目 思路 和这个一样:Basic Calculator I 代码 class ExpressionTransformation { public: strin ...

  6. LeetCode 227. 基本计算器 II(Basic Calculator II)

    227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...

  7. 【LeetCode】227. Basic Calculator II 解题报告(Python)

    [LeetCode]227. Basic Calculator II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...

  8. [LeetCode] Basic Calculator II 基本计算器之二

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  9. Basic Calculator II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

随机推荐

  1. spring boot 访问外部http请求

    以前 访问外部请求都要经过 要用 httpClient  需要专门写一个方法  来发送http请求   这个这里就不说了 网上一搜全都是现成的方法 springboot 实现外部http请求 是通过F ...

  2. 小样本元学习综述:A Concise Review of Recent Few-shot Meta-learning Methods

    原文链接 小样本学习与智能前沿 . 在这个公众号后台回复'CRR-FMM',即可获得电子资源. 1 Introduction In this short communication, we prese ...

  3. windows中flask的环境搭建

    之前在ctf中遇到了python模板注入的题,于是就打算学习一下flask框架,它是基于Python的Web轻量级应用框架,与其他框架相比,Flask可以自主选择应用组件,可扩展性强. 安装也简单 第 ...

  4. 第四十章、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...

  5. PHP代码审计分段讲解(14)

    30题利用提交数组绕过逻辑 本篇博客是PHP代码审计分段讲解系列题解的最后一篇,对于我这个懒癌患者来说,很多事情知易行难,坚持下去,继续学习和提高自己. 源码如下: <?php $role = ...

  6. Linux 服务分类

    一,服务分类 1,服务简介与分类 1,服务的分类 启动与自启动 1,服务启动:就是在当前系统中让服务运行,并提供功能 2,服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自动启动的 ...

  7. bootstrap table 嵌入百分比进度条

  8. 总括订单Blanket order

    总括订单Blanket order是客户向其供应方发出的采购订单,但其中包含一段时间内的多个交货日期,通常使用谈判时的预定价格.大多数情况下,它用于对消耗性商品有经常性需求的情况.总括订单通常用于客户 ...

  9. STL——容器(deque) deque 的大小

    1. deque 的大小 deque.size();              //返回容器中元素的个数 1 #include <iostream> 2 #include <dequ ...

  10. C++异常之七 标准库里的异常类

    标准库里的异常类 C++标准提供了一组标准异常类,这些类以基类 Exception 开始,标准程序库抛出的所有异常,都派生于该基类,这些类构成如图所示的异常类的派生继承关系,该基类提供一个成员函数 w ...