Q227 Basic Calculator II
/*
看的答案,设置一个符号变量记录这个数前边的符号是什么,不同的符号进行不同的操作。这点自己想到了。
没想到的是由于乘除相当于一个优先级高的线程,所以要先处理,还有存取前一个乘数或者分子,应该怎么办。
答案用的是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的更多相关文章
- Basic Calculator,Basic Calculator II
一.Basic Calculator Total Accepted: 18480 Total Submissions: 94750 Difficulty: Medium Implement a bas ...
- leetcode 224. Basic Calculator 、227. Basic Calculator II
这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...
- 【LeetCode】227. Basic Calculator II
Basic Calculator II Implement a basic calculator to evaluate a simple expression string. The express ...
- [LeetCode] Basic Calculator & Basic Calculator II
Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...
- LeetCode OJ Basic Calculator II
Basic Calculator II 题目 思路 和这个一样:Basic Calculator I 代码 class ExpressionTransformation { public: strin ...
- LeetCode 227. 基本计算器 II(Basic Calculator II)
227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...
- 【LeetCode】227. Basic Calculator II 解题报告(Python)
[LeetCode]227. Basic Calculator II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
- [LeetCode] Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
随机推荐
- Alpha冲刺——总结
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...
- 【2020.12.01提高组模拟】卡特兰数(catalan)
题目 题目描述 今天,接触信息学不久的小\(A\)刚刚学习了卡特兰数. 卡特兰数的一个经典定义是,将\(n\)个数依次入栈,合法的出栈序列个数. 小\(A\)觉得这样的情况太平凡了.于是,他给出了\( ...
- 【NOIP2015模拟11.4】JZOJ2020年8月6日提高组T2 最优交换
[NOIP2015模拟11.4]JZOJ2020年8月6日提高组T2 最优交换 题目 题解 题意 有一个长度为\(n\)的正整数 最多可以进行\(k\)次操作 每次操作交换相邻两个位置上的数 问可以得 ...
- Spring Boot 使用 XXL-JOB
一.配置部署调度中心 1.1 下载源码 https://github.com/xuxueli/xxl-job 1.2 数据库初始化 执行 /xxl-job/doc/db/tables_xxl_job. ...
- PyQt(Python+Qt)学习随笔:QAbstractItemView的showDropIndicator属性
老猿Python博文目录 老猿Python博客地址 概述 QAbstractItemView的showDropIndicator属性用于控制在拖拽过程中显示当前拖拽到的位置,当释放时则在当前拖拽位置覆 ...
- 【.Net Core】开源项目源码--门户网站--精神科医院官网
项目简介 此项目是一个实际开发招投标项目,汕头大学精神卫生中心.一个门户网站,因为没有投标上所以把源码公开出来分享. Github地址: https://github.com/simawenbo12/ ...
- 常见SQL注入点判断
sql注入手工检测 SQL注入手工检测 1基本检测 数字型 字符型 搜索型 POST注入 布尔盲注 报错注入 堆叠注入 判断是什么数据库 2绕过技巧 大小写 替换关键字 使用编码 注释和符号 等价函数 ...
- AWD不死马与克制方法
一个简单的不死马如: <?php ignore_user_abort(true); set_time_limit(0); unlink(__FILE__); $file = '.3.php'; ...
- DokcerFile的添加及如何生成一个自定义镜像mycentos(四)
最近在学习Docker,用commit去生成一个镜像,但是生成后的镜像非常臃肿,所以去学习了一下DockerFile. 前提条件: 已在虚拟机中成功安装Docker 简单的理解可以如下图所示: Doc ...
- 基于gin的golang web开发:服务间调用
微服务开发中服务间调用的主流方式有两种HTTP.RPC,HTTP相对来说比较简单.本文将使用 Resty 包来实现基于HTTP的微服务调用. Resty简介 Resty 是一个简单的HTTP和REST ...