Implement a basic calculator to evaluate a simple expression string.
The expression string may contain open (
and closing parentheses )
, the plus +
or minus sign -
, non-negative integers and empty spaces .
You may assume that the given expression is always valid.
Some examples:
"1 + 1" = 2 " 2-1 + 2 " = 3 "(1+(4+5+2)-3)+(6+8)" = 23
Note: Do not use the eval
built-in library function.
public class Solution { public int calculate(String s) { char[] charArray = s.toCharArray(); Stack<Integer> stack = new Stack<>(); int res = 0; int sign = 1; stack.push(1); for (int i = 0; i < charArray.length; i++) { if (Character.isDigit(charArray[i])) { int num = charArray[i] - '0'; int j = i + 1; while (j < charArray.length && Character.isDigit(charArray[j])) { num = num * 10 + charArray[j] - '0'; j++; } res += sign * stack.peek() * num; i = j - 1; } else if (charArray[i] == '+') { sign = 1; } else if (charArray[i] == '-') { sign = -1; } else if (charArray[i] == '(') { stack.push(sign * stack.peek()); sign = 1; } else if (charArray[i] == ')') { stack.pop(); } else { ; } } return res; } }
public class Solution { public int calculate(String s) { Stack<Integer> stack = new Stack<>(); int res = 0; int sign = 1; int num = 0; for (int i = 0; i < s.length(); i++) { char ch = s.charAt(i); if (ch <= '9' && ch >= '0') { num = 10 * num + ch - '0'; } else if (ch == '+') { res += sign * num; sign = 1; num = 0; } else if (ch == '-') { res += sign * num; sign = -1; num = 0; } else if (ch == '(') { stack.push(res); stack.push(sign); res = 0; sign = 1; } else if (ch == ')') { res += sign * num; num = 0; res *= stack.pop(); res += stack.pop(); } } if (num != 0) { res += sign * num; } return res; } }
相关推荐
标题中的“Basic Calculator Written in Visual Basic”表明这是一个基础的计算程序,它利用了VB的核心功能来实现基本的算术运算。VB中的计算器通常包括加、减、乘、除等基本运算,以及可能的开方、取余数等高级功能...
java java_leetcode题解之Basic Calculator.java
java java_leetcode题解之Basic Calculator II.java
Algorithm-BasicCalculator.zip,ios objective-c使用堆栈实现算术表达式求值和基本的四种算术操作(包括括号操作),算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
basicCalculator
【C#基础计算器程序】 C#是一种面向对象的编程语言,由微软公司开发,广泛应用于构建Windows桌面应用程序、Web应用程序以及移动平台应用等。在这个基本的计算器程序中,我们将探讨C#的一些核心概念和语法,以及如何...
【Basic Calculator 1.0-开源】是一款基于两位数基数运算的开源计算器应用。这款计算器设计简洁,专注于基本算术操作,为用户提供了一个方便的计算工具。开源软件意味着它的源代码是公开的,允许用户查看、修改和...
在“BasicCalculator”项目中,我们利用JavaScript构建了一个简单的网页计算器,旨在理解和实践JavaScript的核心概念以及DOM(Document Object Model)操作。 1. **JavaScript语法基础** JavaScript的基础语法包括...
"BasicCalculator"是一个基于C#语言开发的基本计算器项目。这个项目的目的是实现一个用户友好、功能齐全的简单计算器,能够执行基本的数学运算,包括加、减、乘、除以及可能的括号运算。通过理解该项目,我们可以...
"BasicCalculator:一次可以执行一项操作的基本计算器"项目就是一个典型的示例,它展示了如何使用Java来实现一个基础的计算功能。 首先,我们需要理解Java的基础语法。Java是一种面向对象的语言,它的核心概念包括类...
"basicCalculator"项目提供了一个简单的实现,用于理解和学习如何使用JavaScript进行基本的算术运算。下面我们将深入探讨JavaScript中的计算方法以及如何构建一个基础计算器。 首先,JavaScript是一种动态类型的...
标题中的“Imitation-windows-basic-calculator.zip_imitation”表明我们正在讨论一个模仿Windows基本计算器的程序或模拟器。这个压缩包可能包含了源代码、设计文档或其他相关资源,用于创建一个与Windows内置计算器...
描述中的"simple Visual Basic calculator"进一步强调了我们的目标是构建一个直观、易于理解的计算器。这个过程涉及的主要知识点包括: 1. **窗体设计**:VB中的窗体是应用程序的主界面,可以通过拖放控件来布局。...
如果Calculator是一个完整的Java应用程序,那么它可能包含了所有必要的类和方法,如GeometryCalculator(用于几何计算)、BasicCalculator(基础运算)、Circle(圆类)、Triangle(三角形类)、Rectangle(矩形类)...
非常基本的Java计算器,使用Java Web Start! 您所要做的就是单击“ cal.jnlp”文件以运行基本的Web Start计算器。
接着,我们可以创建多个继承自`Calculator`的子类,例如`BasicCalculator`、`ScientificCalculator`和`FinancialCalculator`。每个子类可以针对特定的计算需求提供自己的实现。例如,`BasicCalculator`可能只实现...
在这个计算器中,可能包含如`Calculator`这样的类,它包含了计算功能的属性和方法,如`add`、`subtract`、`multiply`和`divide`等。通过实例化此类,可以创建多个独立的计算器实例,满足在单个网页上创建任意数量...
【基本的Android计算器】是一个基于Java编程语言开发的计算器应用,它为用户提供了一个简单而直观的界面,可以执行基本的算术运算。在Android平台上构建这样的应用涉及到多个关键知识点,包括用户界面设计、事件处理...
2. **具体产品类**:具体的产品类是实现了`Calculator`接口或抽象类的具体计算器,如`BasicCalculator`、`ScientificCalculator`等。每个具体类实现自己的计算逻辑。 3. **工厂类**:`CalculatorFactory`是关键角色...
启动应用程序: 解压文件 导航到终端中的项目文件夹 安装 凉亭安装 吞咽 Gulp 将在终端窗口中运行 mocha 服务器测试并打开浏览器到计算器应用程序。 计算器应用程序处理: 操作顺序 ...大数的科学记数法