力扣227:基本计算器II

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

示例 1:

输入:s = "3+2*2"
输出:7

示例 2:

输入:s = " 3/2 "
输出:1

示例 3:

输入:s = " 3+5 / 2 "
输出:5

代码:

int calculate(char *s) {int len = strlen(s);// 获取输入字符串的长度。int stack[len];// 定义一个整数数组 stack,用于模拟栈,存储中间结果。int top = 0;// 定义一个变量 top,用于表示栈顶位置,初始值为 0,表示栈为空。long ans = 0;// 定义一个长整型变量 ans,用于存储最终的计算结果。long num = 0;// 定义一个长整型变量 num,用于临时存储数字。char sign = '+';// 定义一个字符变量 sign,用于记录上一个操作符,初始值为 '+'。for (int i = 0; i <= len; i++) {// 遍历输入字符串。if (isdigit(s[i])) {num = num * 10 + (s[i] - '0');// 如果当前字符是数字,将其转换为数字并累加到 num 中。} else {if (s[i] == ' ') {continue;}// 如果当前字符是空格,跳过。if (sign == '+') {stack[top++] = num;} else if (sign == '-') {stack[top++] = -num;} else if (sign == '*') {stack[top - 1] *= num;} else if (sign == '/') {stack[top - 1] /= num;}// 根据上一个操作符 sign 的值,对 num 进行相应的操作,并将结果存入栈中。sign = s[i];// 更新 sign 为当前操作符。num = 0;// 重置 num 为 0,准备下一个数字的读取。}}while (top > 0) {ans += stack[--top];}// 遍历栈,将栈中的所有元素相加,得到最终结果。return ans;// 返回最终的计算结果。
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫基础篇:http协议、请求头、响应头

HTTP HTTPS协议 搞爬虫就是搞http协议&#xff0c;位于应用层 HTTP协议以明文方式发送数据&#xff0c;数据无法加密&#xff0c;易被盗取 HTTPS协议较http协议加了个安全层&#xff0c;即有一个SSL协议 区别&#xff1a; HTTPS协议需要一个ca证书&#xff0c;一般免费较少…

质数的小游戏~(牛客,cf)

添加链接描述 H 题&#xff1a; n 的范围是 1e6 大致的思路 就是 每一段 固定一个质数&#xff0c;然后这一段中的 数下标 的和都是这个质数。 对于[1 n] 这些数 &#xff0c;对于n 向前找到 一个比他大的最小的质数。假设这个质数nj 。那么也就是说 我n 这个数应该放在下标为…

‘’‘’笔记

关闭防火墙及SELinux [rootserver ~]# systemctl stop firewalld 临时关闭 [rootserver ~]# systemctl disable firewalld 取消开机启动 [rootserver ~]# setenforce 0 临时关闭&#xff0c;重启失效 设置主机名 [rootserver ~]# ho…

【热门主题】000018 人工智能深度学习模型:探索与应用

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…

Linux学习_8

第七章命令解释器-shell 主要包括Linux中特殊符号&#xff0c;命令别名&#xff0c;命令历史 概述&#xff1a; shell&#xff1a;壳&#xff0c;命令解释器&#xff0c;负责解析用户输入的命令 type命令&#xff1a; 查看命令是内置命令、外置命名、alias命令 type -参数 命…

C++从入门到起飞之——红黑树封装map和set 全方位剖析!

目录 1、map和set的整体框架 2、map和set迭代器的实现 3、map支持[] 4、完整源码 set.h map.h RBTree.h 1、map和set的整体框架 因为map和set的底层都是红黑树&#xff0c;所以我们考虑用一个红黑树的类模版去实例化map和set对象&#xff01;不过&#xff0c;map节点中存…

php处理文件上传的五种方式

dd($_FILES); //方式一 if(!empty($_FILES[file])){ //获取文件后缀方式一 //strrchr()函数查找字符在指定字符串中从右面开始的第一次出现的位置&#xff0c; //如果成功&#xff0c;返回该字符以及其后面的字符&#xf…

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

git仓库分支

操作 切换分支 git checkout 1.2.5 git checkout 1.3.0 使用命令切换分支之后&#xff0c;代码内容加载过后也是切换好的

突破挑战,创新前行 | 生信科技SOLIDWORKS 2025新品发布会·合肥站精彩回顾

2024年10月18日&#xff0c;由生信科技举办的首场SOLIDWORKS 2025新产品发布会在安徽合肥圆满落幕。现场邀请到制造业的专家学者们一同感受SOLIDWORKS 2025最新功能&#xff0c;探索制造业数字化转型之路。 合肥站活动日&#xff0c;由生信科技副总经理徐建开场。他以智造无界&…

《C Primer Plus》中文版第十六章习题

16.17 复习题 1. 下面的几组代码由一个或多个宏组成&#xff0c;其后是使用宏的源代码。在每种情况下代码的结果是什么?这些代码是否是有效代码?(假设其中的变量已声明)。 a. #define FPM 5280 dist FPM * miles; b. #define FEET 4 #define POD FEET FEET plort …

15分钟学 Go 第 26 天:基本的Web服务

第26天&#xff1a;基本的Web服务 学习目标 在这一节中&#xff0c;我们将学习如何创建一个简单的HTTP服务器。我们将介绍Go语言中的net/http包&#xff0c;具体实现一个基本的Web服务&#xff0c;同时理解HTTP请求和响应的基本概念。 1. Go的HTTP服务器概述 Go语言内置的n…

Linux·进程间通讯(管道)

从本节开始将使用vscode写代码&#xff0c;语言也切换成C&#xff0c;同时OS从centOS换成ubentu。 进程之间可能存在数据传输、资源共享、通知事件、进程控制等需求&#xff0c;但是进程又具有独立性&#xff0c;所以就需要专门的进程间通讯技术(ipc)来满足需求。进程间通讯(IP…

人工智能与伦理:我们应该如何平衡科技与人性?

内容概要 在这个瞬息万变的时代&#xff0c;人工智能的迅猛发展让我们面对前所未有的伦理困境。科技进步带来了便利&#xff0c;但同时也亟需我们反思如何对待人性。尤其是在实现算法透明性时&#xff0c;我们要确保每一个决策背后都能被理解与追溯&#xff0c;这不仅是对技术…

云服务器排查微信支付接口异常

1.官方文章 网络云排查工具安装方法 - 腾讯客服 2.官方文章 网络云排查工具使用常见场景以及排查方法 - 腾讯客服 3.商户平台查看 网络波动和实际接口日志出问题时间对照

前端内存空间(堆、栈、队列、拷贝、垃圾回收)

在了解前端内存空间前&#xff0c;我们先学习三种基本数据结构&#xff1a;堆、栈、队列。 栈 栈是一种线性的数据结构&#xff0c;它遵循后进先出&#xff08;LIFO&#xff09;的原则。栈的特点是只能在栈顶进行插入和删除操作&#xff0c;因此栈的底部是栈中的最小值。 栈是…

浮动+flex布局

一.浮动 1.介绍 2.效果 <style> .one{ width: 100px; height: 100px; background-color: red; float: left; } .two{ width: 200px; height: 200px; background-color: blue; float: right; } </style> </head> <body> <div class"one&quo…

安全日志记录的重要性

1024程序员节不仅是对技术的庆祝&#xff0c;也是我们审视自己工作中责任的重要时刻。在现代信息安全体系中&#xff0c;安全日志记录是最关键的环节之一。它不仅能帮助企业或开发者及时发现安全威胁&#xff0c;还能在事后追踪攻击源、分析事件并采取补救措施。因此&#xff0…

架构师备考-系统分析与设计(结构化方法)

定义 1978年&#xff0c;E.Yourdon 和 L.L.Constantine 提出了结构化方法&#xff0c;即 SASD 方法&#xff0c;也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon 方法是20世纪80年代使用最广泛的软件开发方法。 结构化方法提出了一组提高软件结构合…

正点原子阿尔法ARM开发板-IMX6ULL(十二)——驱动开发的简单介绍

文章目录 一、前言二、Linux驱动开发思维三、驱动开发分类四、应用程序和驱动的交互原理五、字符设备驱动开发流程 一、前言 也终于是到了这个最是激动人心的时刻了&#xff0c;那个也是从本科&#xff0c;就听说过的词汇&#xff0c;非常的让人神往&#xff0c;这个词对我而言…