Implement a basic calculator to evaluate a simple expression string.
The expression string contains only non-negative integers, +
, -
, *
, /
operators and empty spaces . The integer division should truncate toward zero.
You may assume that the given expression is always valid.
Some examples:
"3+2*2" = 7 " 3/2 " = 1 " 3+5 / 2 " = 5
Note: Do not use the eval
built-in library function.
public class Solution { public int calculate(String s) { if (s == null || s.length() == 0) { return 0; } Stack<Integer> num = new Stack<>(); Stack<Character> symbol = new Stack<>(); s += "#"; boolean isNum = false; int cnt = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == ' ') { continue; } char charAt = s.charAt(i); if (Character.isDigit(charAt)) { cnt = cnt * 10 + (charAt - '0'); isNum = true; } else { if (isNum) { num.push(cnt); cnt = 0; isNum = false; if (!symbol.isEmpty() && (symbol.peek() == '*' || symbol.peek() == '/')) { char pop = symbol.pop(); int b = num.pop(); int a = num.pop(); if (pop == '*') { num.push(a * b); } else { num.push(a / b); } } } if (charAt != '#') { symbol.push(charAt); } } } if (!symbol.isEmpty()) { int tmp = 0; while (!symbol.isEmpty()) { Character pop = symbol.pop(); int a = num.pop(); if (pop == '+') { tmp += a; } else { tmp -= a; } } num.push(tmp + num.pop()); } return num.pop(); } }
相关推荐
java java_leetcode题解之Basic Calculator II.java
java java_leetcode题解之Basic Calculator.java
Algorithm-BasicCalculator.zip,ios objective-c使用堆栈实现算术表达式求值和基本的四种算术操作(包括括号操作),算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
c c语言_leetcode题解之0227_basic_calculator_ii
basicCalculator
标题中的“Basic Calculator Written in Visual Basic”表明这是一个基础的计算程序,它利用了VB的核心功能来实现基本的算术运算。VB中的计算器通常包括加、减、乘、除等基本运算,以及可能的开方、取余数等高级功能...
【C#基础计算器程序】 C#是一种面向对象的编程语言,由微软公司开发,广泛应用于构建Windows桌面应用程序、Web应用程序以及移动平台应用等。在这个基本的计算器程序中,我们将探讨C#的一些核心概念和语法,以及如何...
《深入解析 mj_Calculator_visualbasic_源码:构建高级数学计算器》 在计算机编程领域,Visual Basic(VB)作为一种面向对象的编程语言,因其易学易用的特点,深受开发者喜爱。今天,我们将深入探讨一个名为 mj_...
c c语言_leetcode题解之0224_basic_calculator
【Basic Calculator 1.0-开源】是一款基于两位数基数运算的开源计算器应用。这款计算器设计简洁,专注于基本算术操作,为用户提供了一个方便的计算工具。开源软件意味着它的源代码是公开的,允许用户查看、修改和...
本篇文章将详细解析一个基于Visual Basic编写的"Calculator"计算器程序,该程序不仅提供了基本的数学计算功能,还具备了处理公式、平方、正切等高级运算的能力。 首先,我们要理解Visual Basic的基础架构。VB是一种...
标题中的“Imitation-windows-basic-calculator.zip_imitation”表明我们正在讨论一个模仿Windows基本计算器的程序或模拟器。这个压缩包可能包含了源代码、设计文档或其他相关资源,用于创建一个与Windows内置计算器...
- **Basic Calculator II**:实现一个基本计算器,读取一个表达式并返回计算结果。 本书通过实际编程案例,讲解了各种算法思想和技巧,涵盖了从基础的数据结构(如数组、链表、树)到复杂的问题解决策略(如动态...
- **基本计算器II(Basic Calculator II)**: 给定一个字符串表达式,实现一个基本计算器来计算并返回结果。 以上总结仅为部分知识点的简述,对于每一个具体的算法问题,都有其独特的解决思路和技巧,建议深入研究每...
* Basic Calculator II:给定一个字符串,返回其计算结果。这个题目需要使用数学的思想,将字符串分解成更小的子字符串,并计算其结果。 LeetCode 中有很多关于数组、链表、树、动态规划、回溯算法、贪心算法、数学...
在“BasicCalculator”项目中,我们利用JavaScript构建了一个简单的网页计算器,旨在理解和实践JavaScript的核心概念以及DOM(Document Object Model)操作。 1. **JavaScript语法基础** JavaScript的基础语法包括...
该项目是一个基于Visual Basic .Net和CSS构建的Mud Calculator 3.0开源设计源码,总计包含228个文件,涵盖62个VB源文件、54个resX资源文件、53个资源文件、27个DLL库文件、6个GIF图像文件、3个可执行文件、2个JPG和...
资源分类:Python库 所属语言:Python 资源全名:T-basic-calculator-0.0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...
"BasicCalculator"是一个基于C#语言开发的基本计算器项目。这个项目的目的是实现一个用户友好、功能齐全的简单计算器,能够执行基本的数学运算,包括加、减、乘、除以及可能的括号运算。通过理解该项目,我们可以...