`
hcx2013
  • 浏览: 88685 次
社区版块
存档分类
最新评论

Basic Calculator

 
阅读更多

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;
    }
}

 

分享到:
评论

相关推荐

    This is a basic calculator written in Visual Basic.

    标题中的“Basic Calculator Written in Visual Basic”表明这是一个基础的计算程序,它利用了VB的核心功能来实现基本的算术运算。VB中的计算器通常包括加、减、乘、除等基本运算,以及可能的开方、取余数等高级功能...

    java-leetcode题解之Basic Calculator.java

    java java_leetcode题解之Basic Calculator.java

    java-leetcode题解之Basic Calculator II.java

    java java_leetcode题解之Basic Calculator II.java

    Algorithm-BasicCalculator.zip

    Algorithm-BasicCalculator.zip,ios objective-c使用堆栈实现算术表达式求值和基本的四种算术操作(包括括号操作),算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

    basicCalculator

    basicCalculator

    C#_basic Calculator_计算器

    【C#基础计算器程序】 C#是一种面向对象的编程语言,由微软公司开发,广泛应用于构建Windows桌面应用程序、Web应用程序以及移动平台应用等。在这个基本的计算器程序中,我们将探讨C#的一些核心概念和语法,以及如何...

    Basic Calculator 1.0-开源

    【Basic Calculator 1.0-开源】是一款基于两位数基数运算的开源计算器应用。这款计算器设计简洁,专注于基本算术操作,为用户提供了一个方便的计算工具。开源软件意味着它的源代码是公开的,允许用户查看、修改和...

    BasicCalculator:JavaScript网页

    在“BasicCalculator”项目中,我们利用JavaScript构建了一个简单的网页计算器,旨在理解和实践JavaScript的核心概念以及DOM(Document Object Model)操作。 1. **JavaScript语法基础** JavaScript的基础语法包括...

    BasicCalculator

    "BasicCalculator"是一个基于C#语言开发的基本计算器项目。这个项目的目的是实现一个用户友好、功能齐全的简单计算器,能够执行基本的数学运算,包括加、减、乘、除以及可能的括号运算。通过理解该项目,我们可以...

    BasicCalculator:一次可以执行一项操作的基本计算器

    "BasicCalculator:一次可以执行一项操作的基本计算器"项目就是一个典型的示例,它展示了如何使用Java来实现一个基础的计算功能。 首先,我们需要理解Java的基础语法。Java是一种面向对象的语言,它的核心概念包括类...

    basicCalculator:这是用javascript开发的基本计算方法

    "basicCalculator"项目提供了一个简单的实现,用于理解和学习如何使用JavaScript进行基本的算术运算。下面我们将深入探讨JavaScript中的计算方法以及如何构建一个基础计算器。 首先,JavaScript是一种动态类型的...

    Imitation-windows-basic-calculator.zip_imitation

    标题中的“Imitation-windows-basic-calculator.zip_imitation”表明我们正在讨论一个模仿Windows基本计算器的程序或模拟器。这个压缩包可能包含了源代码、设计文档或其他相关资源,用于创建一个与Windows内置计算器...

    calculator

    描述中的"simple Visual Basic calculator"进一步强调了我们的目标是构建一个直观、易于理解的计算器。这个过程涉及的主要知识点包括: 1. **窗体设计**:VB中的窗体是应用程序的主界面,可以通过拖放控件来布局。...

    Calculator_java_计算器_biggerlhy_

    如果Calculator是一个完整的Java应用程序,那么它可能包含了所有必要的类和方法,如GeometryCalculator(用于几何计算)、BasicCalculator(基础运算)、Circle(圆类)、Triangle(三角形类)、Rectangle(矩形类)...

    Basic Calculator-开源

    非常基本的Java计算器,使用Java Web Start! 您所要做的就是单击“ cal.jnlp”文件以运行基本的Web Start计算器。

    c#中应用多态的计算器

    接着,我们可以创建多个继承自`Calculator`的子类,例如`BasicCalculator`、`ScientificCalculator`和`FinancialCalculator`。每个子类可以针对特定的计算需求提供自己的实现。例如,`BasicCalculator`可能只实现...

    Drop-down Javascript Basic Calculator-开源

    在这个计算器中,可能包含如`Calculator`这样的类,它包含了计算功能的属性和方法,如`add`、`subtract`、`multiply`和`divide`等。通过实例化此类,可以创建多个独立的计算器实例,满足在单个网页上创建任意数量...

    basiccalculator:基本的Android计算器

    【基本的Android计算器】是一个基于Java编程语言开发的计算器应用,它为用户提供了一个简单而直观的界面,可以执行基本的算术运算。在Android平台上构建这样的应用涉及到多个关键知识点,包括用户界面设计、事件处理...

    计算器-简单工厂模式

    2. **具体产品类**:具体的产品类是实现了`Calculator`接口或抽象类的具体计算器,如`BasicCalculator`、`ScientificCalculator`等。每个具体类实现自己的计算逻辑。 3. **工厂类**:`CalculatorFactory`是关键角色...

    basicCalculator:带有键绑定、操作顺序、科学记数法的角度计算器应用程序

    启动应用程序: 解压文件 导航到终端中的项目文件夹 安装 凉亭安装 吞咽 Gulp 将在终端窗口中运行 mocha 服务器测试并打开浏览器到计算器应用程序。 计算器应用程序处理: 操作顺序 ...大数的科学记数法

Global site tag (gtag.js) - Google Analytics