当前位置: 首页 > news >正文

【百日算法计划】:每日一题,见证成长(026)

题目

给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。
表达式仅包含非负整数,+, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。 * *
示例 1:
输入: “3+2X2”
输出: 7


import java.util.Stack;public class Code {public int calculate(String s) {Stack<Integer> data_stack = new Stack<>();Stack<Character> char_stack = new Stack<>();int length = s.length();int i = 0;while (i < length){char c = s.charAt(i);if (c == ' '){ //空格直接跳过i++;} else if (checkNumber(c)){ //如果是数字,处理如多个数字的情况 如333+1中的333int tmp = 0;while (i < length && checkNumber(s.charAt(i))){tmp = tmp * 10 + (s.charAt(i) - '0');i++;}data_stack.push(tmp);} else if (c == '('){ //左括号 直接入栈char_stack.push(c);i++;} else if (c == ')'){ //右括号 出栈计算 直到碰到'('为止while (!char_stack.isEmpty() && char_stack.peek() != '('){fetchAndCol(data_stack,char_stack);}char_stack.pop(); //弹出'('i++;} else {//如果字符栈为空 或者 运算字符 优先级 大于 栈顶字符,则运算字符直接入栈if (char_stack.isEmpty() || checkChar(c,char_stack.peek())){char_stack.push(c);} else {//优先级: 运算字符 <= 栈顶字符 ,则拿数字栈的前两个数字和栈顶字符栈计算,并把结果压入数字栈while (!char_stack.isEmpty() && !checkChar(c,char_stack.peek())){fetchAndCol(data_stack,char_stack);}char_stack.push(c); //最后再把字符入字符栈}i++;}}//如果字符栈不为空,则开始最后的计算,最后数字栈里只有一个最后计算的结果while (!char_stack.isEmpty()){fetchAndCol(data_stack,char_stack);}return data_stack.pop();}//计算数字栈和运算符栈public void fetchAndCol(Stack<Integer> data_stack,Stack<Character> char_stack){Integer pop1 = data_stack.pop();Integer pop2 = data_stack.pop();Character pop = char_stack.pop();Integer math = math(pop1, pop2, pop);data_stack.push(math);}public Integer math(Integer number1,Integer number2,char c){if (c == '+') return number1 + number2;if (c == '-') return number2 - number1;if (c == '*') return number1 * number2;if (c == '/') return number2 / number1;else return -1;}public boolean checkChar(char c,char top){if ((c == '*' || c == '/') && (top == '+' || top == '-')) return true;if (top == '(') return true; //栈顶运算符是'(' 也是返回trueelse return false;}//判断是否是数字public boolean checkNumber(char c){if (c >= '0' && c <= '9') return true;else return false;}
}

相关文章:

【百日算法计划】:每日一题,见证成长(026)

题目 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外)&#xff0c;计算其结果。 表达式仅包含非负整数&#xff0c;&#xff0c; - &#xff0c;&#xff0c;/ 四种运算符和空格 。 整数除法仅保留整数部分。 * * 示例 1: 输入: “32X2” 输出: 7 import…...

【大模型】prompt实践总结

文章目录 怎么才算是好的prompt设计准则基本原则精炼原则(奥卡姆剃刀准则)具体原则真实操作技巧指定角色增加fewshots列表化代码化强调需求真实迭代大模型优化情形任务的定义和评估标准似乎可以再明确一下出现了一些之前没有考虑过的特殊情况,可以重新组织语言优化Prompt来处…...

在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】

在Qt&#xff08;以及C&#xff09;中&#xff0c;& 和 * 是两个至关重要的符号&#xff0c;它们用于处理引用和指针。我们将逐个解释这两个符号&#xff0c;并提供简单示例来说明它们的用法。 1. 引用&#xff08;&&#xff09; 定义: 引用是一种别名&#xff0c;它不…...

本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程

文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…...

Ubuntu常见命令

关于export LD_LIBRARY_PATHcmake默认地址CMakelists.txt知识扩充/home&#xff1a;挂载新磁盘到 /home 子目录 关于export LD_LIBRARY_PATH 程序运行时默认的依赖库的位置包括lib, /usr/lib ,/usr/local/lib 通过命令export LD_LIBRARY_PATHdesired_path:$LD_LIBRARY_PATH追加…...

网络安全领域的最新动态和漏洞信息

网络安全领域的最新动态和漏洞信息涉及多个方面&#xff0c;以下是对这些信息的详细归纳&#xff1a; 一、网络安全领域最新动态世界互联网大会乌镇峰会召开2024年11月19日至22日&#xff0c;以“拥抱以人为本、智能向善的数字未来——携手构建网络空间命运共同体”为主题的202…...

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…...

每日OJ题_牛客_天使果冻_递推_C++_Java

目录 牛客_天使果冻_递推 题目解析 C代码 Java代码 牛客_天使果冻_递推 天使果冻 描述&#xff1a; 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻&#xff0c;但她想把最好吃的果冻留到最后收藏。天使想知道前 x个果冻中&#xff0c;美味…...

独立站干货:WordPress主机推荐

WordPress作为全球最受欢迎的独立站建设平台&#xff0c;提供了灵活性和强大的功能&#xff0c;使得建站变得简单而高效。本文将为您详细介绍WordPress建站的流程&#xff0c;并推荐几款实测后觉得好用的主机商。 WordPress建站流程 域名注册 首先需要注册一个域名&#xff0c…...

支持多种快充协议和支持多种功能的诱骗取电协议芯片

汇铭达XSP15是一款应用于手持电动工具、智能家居、显示器、音箱等充电方案的大功率快充协议芯片&#xff0c;支持最大功率100W给设备快速充电&#xff0c;大大缩短了充电时间。芯片支持通过UART串口发送电压/电流消息供其它芯片读取。支持自动识别连接的是电脑或是充电器。支持…...

Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案&#xff0c;内容包括代码示例、原因分析以及最佳实践建议。 1. 静态变量导致的内存泄漏 静态变量的生命周期与应用进程一致&#xff0c;如果静态变量持有了对 Activity 或其他大对象的引用&#xff0c;就可能导致内存泄漏…...

MyBatis Plus中的@TableId注解

TableId 注解用于将某个成员变量指定为数据表主键&#xff0c;以下为使用示例&#xff1a; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lo…...

java基础概念33:常见API-Objects工具类

一、使用场景 二、成员方法 2-1、equals方法 源码&#xff1a; 2-2、isNull方法、nonNull方法 三、小结...

脚手架vue-cli,webpack模板

先安装node.js&#xff0c;它是服务器端&#xff0c;用于给页面提供服务。前端学习不需要会node.js&#xff0c;只需要学会node.js衍生出来的npm命令即可。 npm 是node.js的一个工具&#xff0c;作用是进行包管理&#xff0c;npm是node.js的包管理器。 接着安装脚手架&#xff…...

什么是React Native?

写在前面 React Native (RN) 是一个由 Facebook 开发的开源框架&#xff0c;用于构建跨平台的移动应用程序。它允许开发者使用 JavaScript 和 React 来创建原生 iOS 和 Android 应用。RN 的出现极大地简化了移动应用的开发过程&#xff0c;使得开发者可以更快速、更高效地构建…...

Three.js LOD(Level of Detail)通过根据视距调整渲染细节的技术

在 Three.js 中&#xff0c;LOD&#xff08;Level of Detail&#xff09;技术是一种通过根据视距调整渲染细节的技术&#xff0c;旨在提高渲染性能并优化用户体验。LOD 技术尤其在处理复杂场景或高多边形模型时显得尤为重要。在这篇博客中&#xff0c;我们将详细介绍 LOD 的概念…...

Vulnhub靶场案例渗透[12]-Grotesque: 1.0.1

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 目录扫描4. 敏感信息获取5. 反弹shell6. 权限提升 一、靶场搭建 1. 靶场描述 get flags difficulty: medium about vm: tested and exported from vi…...

招聘和面试

本篇内容是根据2019年4月份#82 Hiring and job interviews音频录制内容的整理与翻译 小组成员 Mat Ryer、Ashley McNamara、Johnny Boursiquot 和 Carmen Andoh 讨论了受聘、雇用和工作面试的过程。如果人是团队中最重要的部分&#xff0c;我们如何选择与谁一起工作&#xff1…...

Gin 框架入门(GO)-1

解决安装包失败问题(*) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 1 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,Gin 最擅长的就是 Api 接口的高并发。 2 Gin 环境搭建 1.下载并安装 gin go get -u github.…...

LeetCode:700. 二叉搜索树中的搜索

目录 题目描述: 代码: 题目描述: 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&#xff1a;root [4,2,7,1,3…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...