Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >224. 基本计算器

224. 基本计算器

作者头像
张伦聪zhangluncong
发布于 2022-10-26 10:16:18
发布于 2022-10-26 10:16:18
38400
代码可运行
举报
运行总次数:0
代码可运行

实现一个基本的计算器来计算一个简单的字符串表达式的值。

字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: "1 + 1"
输出: 2

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: " 2-1 + 2 "
输出: 3

示例 3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入: "(1+(4+5+2)-3)+(6+8)"
输出: 23

说明:

  • 你可以假设所给定的表达式都是有效的。
  • 请不要使用内置的库函数 eval。

解:大学数据结构中的题,数据结构中还有乘除,主要就是使用栈来处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public static int calculate(String s) {
        int len = s.length();
        int sign = 1;
        int result = 0;
        Stack<Integer> stack = new Stack<Integer>();
        for (int i = 0; i < len; i++) {
            if (Character.isDigit(s.charAt(i))) {
                int sum = s.charAt(i) - '0';
                while (i < (len - 1) && Character.isDigit(s.charAt(i + 1))) {
                    sum = sum * 10 + s.charAt(i + 1) - '0';
                    i++;
                }
                result += sum * sign;
            } else if (s.charAt(i) == '+')
                sign = 1;
            else if (s.charAt(i) == '-')
                sign = -1;
            else if (s.charAt(i) == '(') {
                stack.push(result);
                stack.push(sign);
                result = 0;
                sign = 1;
            } else if (s.charAt(i) == ')') {
                result = result * stack.pop() + stack.pop();
            }

        }
        return result;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Baozi Training Leetcode Solution 224: Basic Calculator
Blogger: https://blog.baozitraining.org/2019/08/leetcode-solution-224-basic-calculator.html
包子面试培训
2019/08/14
5980
Baozi Training Leetcode Solution 224: Basic Calculator
Leetcode 题目解析之 Basic Calculator
Implement a basic calculator to evaluate a simple expression string.
ruochen
2022/01/15
1.2K0
小鹏三面,一道 Hard 结束
一般来说,面试过程有个潜规则,如果面试官对你很满意,在算法面试环节往往会给你出一道简单题或者送分题,如果觉得不满意,则会让你手撕一道 Hard 题,让你觉得是因为这个环节表现不佳被拒。
五分钟学算法
2024/05/10
4490
小鹏三面,一道 Hard 结束
Basic Calculator 基本计算器-Leetcode
1.题目: 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
老白
2018/03/19
1.2K0
【练习】计算给定算数表达式的结果
给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。
孟君
2020/04/23
1.2K0
LeetCode 224. 基本计算器(栈)
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
Michael阿明
2020/07/13
5590
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
大家好,我是小魔龙,Unity3D软件工程师,VR、AR,虚拟仿真方向,不定时更新软件开发技巧,生活感悟,觉得有用记得一键三连哦。
恬静的小魔龙
2022/09/27
4560
☆打卡算法☆LeetCode 224. 基本计算器 算法解析
算法细节系列(25):加减乘除
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/72782815
用户1147447
2019/05/26
5190
227. 基本计算器 II
字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
张伦聪zhangluncong
2022/10/26
3140
227. 基本计算器 II
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s = "3+2*2" 输出:7 示例 2: 输入:s = " 3/2 " 输出:1 示例 3: 输入:s = " 3+5 / 2 " 输出:5 class Solution { public int calculate(String s) { /** 有一个记录上一次出现的符号变量的 pre 加法直接入栈
编程张无忌
2021/06/01
3280
Leetcode 题目解析之 Basic Calculator II
Implement a basic calculator to evaluate a simple expression string.
ruochen
2022/01/15
1.3K0
基本计算器
中缀表达式进行正常的四则运算,即按优先级高低先算括号里的再算括号外,就需要将中缀字符串转为逆波兰表达式再求解。
狼啸风云
2023/11/11
2110
基本计算器
实现一个基本的计算器来计算一个简单的字符串表达式 s 的值
思路:这个题挺简单的。虽然是困难难度,但是类似的我做过,就是各种字符串分情况处理。用一个flag记录+还是-。然后括号里的先计算。大概思路就这样,我直接去敲代码试试了。
大发明家
2021/12/15
2.1K0
Decode String
Given an encoded string, return it’s decoded string.
Tyan
2019/05/25
8470
有没有想过计算机是如何处理表达式的?
https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/
代码随想录
2021/07/16
6480
中缀表达式转后缀表达式并求值
1.什么是中缀表达式? 中缀表达式示例 2.什么是后缀表达式? 后缀表达式示例 3.代码 package xmht.datastructuresandalgorithms.datastructure.stack; import java.util.ArrayList; import java.util.List; import java.util.Stack; /** * @author shengjk1 * @date 2020/2/16 */ /* 仅仅适用于 int 类型计算 */ p
shengjk1
2020/02/21
5330
leetcode之括号的最大嵌套深度
这里用stack来匹配括号,对于左括号执行进栈操作,对于右括号先计算最大的深度,然后再出栈。
code4it
2020/10/28
1.2K0
leetcode之括号的最大嵌套深度
一、基础数据结构
1、当移动<font style="color:rgb(233, 105, 0);background-color:rgb(248, 248, 248);">right</font>扩大窗口,即加入字符时,应该更新哪些数据?
阿东知识库1
2024/09/03
1750
一、基础数据结构
【表达式计算】双栈 : 表达式计算问题的通用解法
的基础上,如果考虑支持自定义符号,例如 a / func(a, b) * (c + d),需要做出什么调整?
宫水三叶的刷题日记
2022/11/01
9070
LeetCode通关:栈和队列六连,匹配问题有绝招
因为栈是一个线性表表,因此,线性表支持栈的操作,ArrayList 和 LinkedList 都可以作为栈来使用。
三分恶
2021/08/25
4780
LeetCode通关:栈和队列六连,匹配问题有绝招
相关推荐
Baozi Training Leetcode Solution 224: Basic Calculator
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验