227 Basic Calculator II 基本计算器II
实现一个基本的计算器来计算一个简单的字符串表达式。
字符串表达式仅包含非负整数,+, - ,*,/四种运算符和空格 。 整数除法仅保留整数部分。
你可以假定所给定的表达式总是有效的。
一些例子:
"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5
注意: 不要使用eval 内置的函数库。
详见:https://leetcode.com/problems/basic-calculator-ii/description/
Java实现:
class Solution {
public int calculate(String s) {
if(s == null || s.length() == 0){
return -1;
} char sign = '+';
int cur = 0;
Stack<Integer> stk = new Stack<Integer>();
for(int i = 0; i<s.length(); i++){
char c=s.charAt(i);
if(Character.isDigit(c)){
cur = cur*10 + c-'0';
} if((!Character.isDigit(c) && c!=' ') || i==s.length()-1){
if(sign == '-'){
stk.push(-cur);
}else if(sign == '+'){
stk.push(cur);
}else if(sign == '*'){
stk.push(stk.pop()*cur);
}else if(sign == '/'){
stk.push(stk.pop()/cur);
}
sign = c;
cur = 0;
}
} int res = 0;
for(int num : stk){
res += num;
}
return res;
}
}
C++实现:
class Solution {
public:
int calculate(string s) {
int size=s.size();
if(size==0||s.empty())
{
return 0;
}
int res=0,d=0;
char sign='+';
stack<int> stk;
for(int i=0;i<size;++i)
{
if(s[i]>='0')
{
d=d*10+s[i]-'0';
}
if(s[i]<'0'&&s[i]!=' '||i==size-1)
{
if(sign=='+')
{
stk.push(d);
}
if(sign=='-')
{
stk.push(-d);
}
if(sign=='*'||sign=='/')
{
int tmp=sign=='*'?stk.top()*d:stk.top()/d;
stk.pop();
stk.push(tmp);
}
sign=s[i];
d=0;
}
}
while(!stk.empty())
{
res+=stk.top();
stk.pop();
}
return res;
}
};
参考:https://www.cnblogs.com/grandyang/p/4601208.html
227 Basic Calculator II 基本计算器II的更多相关文章
- leetcode 224. Basic Calculator 、227. Basic Calculator II
这种题都要设置一个符号位的变量 224. Basic Calculator 设置数值和符号两个变量,遇到左括号将数值和符号加进栈中 class Solution { public: int calcu ...
- 【LeetCode】227. Basic Calculator II 解题报告(Python)
[LeetCode]227. Basic Calculator II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...
- [LeetCode] 227. Basic Calculator II 基本计算器 II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- 227. Basic Calculator II 无括号版本计算器
[抄题]: Implement a basic calculator to evaluate a simple expression string. The expression string con ...
- 【LeetCode】227. Basic Calculator II
Basic Calculator II Implement a basic calculator to evaluate a simple expression string. The express ...
- 224. Basic Calculator + 227. Basic Calculator II
▶ 两个四则表达式运算的题目,第 770 题 Basic Calculator IV 带符号计算不会做 Orz,第 772 题 Basic Calculator III 要收费 Orz. ▶ 自己的全 ...
- LeetCode#227.Basic Calculator II
题目 Implement a basic calculator to evaluate a simple expression string. The expression string contai ...
- [LeetCode] 227. Basic Calculator II 基本计算器之二
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- Java for LeetCode 227 Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
- 227. Basic Calculator II
Implement a basic calculator to evaluate a simple expression string. The expression string contains ...
随机推荐
- HDU OJ Max sum 题目1003
#include <iostream> #include<stdio.h> #include<stdlib.h> using namespace std; i ...
- 切勿创建包括auto_ptr的容器对象
当你拷贝一个auto_ptr时,它所指向的对象的全部权被移交到拷入的auto_ptr上,而它自身被置为NULL.我的理解是:拷贝一个auto_ptr意味着改变它的值.比如: auto_ptr&l ...
- Xpath—解决这个问题的良药
何为良药? 因为在XML中存在一些问题和缺陷,针对这些问题就产生了响应的解决方式.如: getElementById方法在解析XML时因为一些原因适不适合的: 首先XML中每一个元素节点不一定有id属 ...
- cocos2dx 3.0 显示中文及乱码解决方式
遇到此问题第一时间在脑子里面联想到android下的strings.xml来做国际化,本文就仅仅针对解析xml来实现cocos2d-x的国际化解决乱码问题. 寻找解决方法的时候在cocos2d-x的c ...
- 借助ltp语义分析提取特征,之后,文本生成
"""地点-哪里有做-业务-的(正规|靠谱)-公司?地点-做-业务-的(正规|靠谱)-公司(有哪些?|的联系方式是什么?|哪家口碑好值得信赖?)地点-做-业务-(怎么能省 ...
- ABAP Debug 技巧
小技巧,可以在Debugger的时候跳过不想执行的代码, 或者返回执行已经执行过的代码,实际开发过程中很有帮助
- windows系统下mysql5.5查看和设置数据库编码
1.显示当前编码命令: show variables like 'char%'; 2.设置编码为utf8命令:set names 'utf8';
- Docker实现CentOS容器SSH远程登录
Docker实现CentOS容器SSH远程登录 https://blog.csdn.net/A632189007/article/details/78625378 这里根据Dockerfile方式构建 ...
- 从0开始学习Hadoop(1) 环境准备 Win7环境+VirtureBox+Ubuntu
虚拟机:VirtureBox 3.18 下载地址: https://www.virtualbox.org/ 操作系统:Ubuntu 版本:ubuntu-15.04-desktop-amd64.iso ...
- 安装phpwind报错
在安装phpwind时,下面的报错提示是什么原因呢? 答:数据库密码应设置为空