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 ...
随机推荐
- python应用(6):函数
在流程很简单的时候,或者流程不简单但我们不需要考虑开发维护成本的时候,平面地组织你的代码就够了,不用费脑子,不需要考虑层次或重用的东西.当事情变得越来越复杂时,当同行对代码质量要求越来越高时,有一些重 ...
- docker 部署 mongodb 并且开启远程连接
mongodb 使用 docker 部署 mongodb 拉取镜像 docker pull mongo 可以查看镜像是否下载成功 docker images | grep mongo 应该会有如下的显 ...
- day2(RESTful风格API)
1.RESTful风格API 详情查看博客地址:https://www.cnblogs.com/xiaonq/p/10053234.html 1.1 什么是RESTful REST与技术无关,代表的 ...
- 2019 ACM/ICPC North America Qualifier G.Research Productivity Index(概率期望dp)
https://open.kattis.com/problems/researchproductivityindex 这道题是考场上没写出来的一道题,今年看看感觉简单到不像话,当时自己对于dp没有什么 ...
- python初次接触
1.python有什么用或者能做什么? 可以做网站(比如 YouTube.豆瓣),可以做图片处理,可以做科学计算,也可以爬虫,甚至于游戏,学好Python后不用担心没有用武之地,Google就大量的在 ...
- java并发编程实战《七》安全性、活跃性以及性能问题
安全性.活跃性以及性能问题 安全性问题 那什么是线程安全呢?其实本质上就是正确性,而正确性的含义就是程序按照我们期望的执行,不要让我们感到意外. 存在共享数据并且该数据会发生变化,通俗地讲就是有多个线 ...
- 第13.1节 关于Python的异常处理
Python的异常网上有很多资料介绍,老猿就不再细说,在这里老猿只挑几件老猿认为重要的内容介绍一下. 一. 异常处理完整语法 异常处理的完整语法语法如下: try: - except (异常1,-,异 ...
- 问题:PyCharm调试方法Force Step over与step over的区别
Force Step over与step over的差别是,后者在执行到函数时,如果函数中设置了断点,会在该函数断点处暂停,等待进一步调试指令,而Force Step over不论函数中是否有断点,都 ...
- windows cmd 链接远程mysql服务器
我要链接的mysql 所在ip:192.168.0.110 用户名:root 密码:123 那么: 打开cmd 输入: mysql -h192.168.0.110 -uroot -p123 即 ...
- web移动端css reset
通用版css reset,pc端使用只需要修改html{font-size: 10px;}为html{font-size: 12px;} @charset "utf-8"; htm ...