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

大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值

文章目录

  • 题目描述与示例
    • 题目描述
    • 输入描述
    • 输出描述
    • 示例
      • 输入
      • 输出
  • 解题思路
  • 代码
    • Python
    • Java
    • C++
    • 时空复杂度
  • 华为OD算法/大厂面试高频题算法练习冲刺训练

题目描述与示例

题目描述

给定一个合法的表达式字符串,其中只包含非负整数、加法、减法以及乘法符号(不会有括号),例如7+3*4*5+2+4-3-1,请写程序计算该表达式的结果并输出

输入描述

输入有多行,每行是一个表达式,输入以END作为结束

输出描述

每行表达式的计算结果

示例

输入

7+3*4*5+2+4-3-1
2-3*1
END

输出

69
-1

解题思路

本题属于经典的中缀表达式计算类栈题,但相比起LeetCode上的几道类似题目相对简单。

代码

Python

# 题目:【栈】Bilibili2019秋招-简单表达式求值
# 作者:闭着眼睛学数理化
# 算法:栈
# 代码有看不懂的地方请直接在群上提问# 更新栈的函数
def update_stack(stack, preSign, num):# 如果前一个符号为乘号,则将栈顶元素乘以numif preSign == "*":stack[-1] *= num# 如果前一个符号为减号,则将-num压入栈中elif preSign == "-":stack.append(-num)# 如果前一个符号为加号,则将num压入栈中elif preSign == "+":stack.append(num)return# 表达式求值的核心函数
def cal_res(line):# 初始化一个空栈stack = list()# 初始化上一个遇到的符号preSign为加号preSign = "+"# 初始化遍历过程中遇到的数字num为0num = 0for ch in line:# 遇到数字的情况,更新numif ch.isdigit():num = num * 10 + int(ch)# 遇到符号(+、-或*)的情况else:# 需要根据num和之前的符号preSign更新栈update_stack(stack, preSign, num)# num已经用完,需要重新将其赋值为0num = 0# 此时的ch赋值给preSign,留着下次使用preSign = ch# 最后一个num尚未计算过,故还需再次调用update_stack()函数update_stack(stack, preSign, num)# 对整个栈进行求和,即为最终的计算结果return sum(stack)line = input()
ans = list()
# 反复输入line,直到输入END
while line != "END":ans.append(cal_res(line))line = input()for res in ans:print(res)

Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<Long> ans = new ArrayList<>();String line = scanner.nextLine();while (!line.equals("END")) {ans.add(calRes(line));line = scanner.nextLine();}for (long res : ans) {System.out.println(res);}}static long calRes(String line) {List<Long> stack = new ArrayList<>();char preSign = '+';long num = 0;for (char ch : line.toCharArray()) {if (Character.isDigit(ch)) {num = num * 10 + Character.getNumericValue(ch);} else {updateStack(stack, preSign, num);num = 0;preSign = ch;}}updateStack(stack, preSign, num);long result = 0;for (long numInStack : stack) {result += numInStack;}return result;}static void updateStack(List<Long> stack, char preSign, long num) {if (preSign == '*') {stack.set(stack.size() - 1, stack.get(stack.size() - 1) * num);} else if (preSign == '-') {stack.add(-num);} else if (preSign == '+') {stack.add(num);}}
}

C++

#include <iostream>
#include <vector>using namespace std;void updateStack(vector<long long> &stack, char preSign, long long num) {if (preSign == '*') {stack.back() *= num;} else if (preSign == '-') {stack.push_back(-num);} else if (preSign == '+') {stack.push_back(num);}
}long long calRes(string line) {vector<long long> stack;char preSign = '+';long long num = 0;for (char ch : line) {if (isdigit(ch)) {num = num * 10 + (ch - '0');} else {updateStack(stack, preSign, num);num = 0;preSign = ch;}}updateStack(stack, preSign, num);long long result = 0;for (long long numInStack : stack) {result += numInStack;}return result;
}int main() {vector<long long> ans;string line;while (true) {getline(cin, line);if (line == "END") {break;}ans.push_back(calRes(line));}for (long long res : ans) {cout << res << endl;}return 0;
}

时空复杂度

时间复杂度:O(Nt)。字符串line中的每一个元素仅需遍历一次。t为询问次数。

空间复杂度:O(N)。栈所占空间。


华为OD算法/大厂面试高频题算法练习冲刺训练

  • 华为OD算法/大厂面试高频题算法冲刺训练目前开始常态化报名!目前已服务100+同学成功上岸!

  • 课程讲师为全网50w+粉丝编程博主@吴师兄学算法 以及小红书头部编程博主@闭着眼睛学数理化

  • 每期人数维持在20人内,保证能够最大限度地满足到每一个同学的需求,达到和1v1同样的学习效果!

  • 60+天陪伴式学习,40+直播课时,300+动画图解视频,300+LeetCode经典题,200+华为OD真题/大厂真题,还有简历修改、模拟面试、专属HR对接将为你解锁

  • 可上全网独家的欧弟OJ系统练习华子OD、大厂真题

  • 可查看链接 大厂真题汇总 & OD真题汇总(持续更新)

  • 绿色聊天软件戳 od1336了解更多

相关文章:

大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值

文章目录 题目描述与示例题目描述输入描述输出描述示例输入输出 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 给定一个合法的表达式字符串&#xff0c;其中只包含非负整数、加法、减法以及乘法符号&#xff08;不…...

(一)RISC-V 指令集及寄存器介绍

1. RISC-V指令集介绍 RISC-V 念作 “risk-five”&#xff0c;代表着 Berkeley 所研发的第五代精简指令集。 该项目 2010 年始于加州大学伯克利&#xff08;Berkeley&#xff09;分校&#xff0c;希望选择一款 ISA用于科研和教学。经过前期多年的研究和选型&#xff0c;最终决定…...

二十三种设计模式:解密职责链模式-购物优惠活动的设计艺术

在购物领域&#xff0c;为了吸引和激励消费者&#xff0c;商家常常会推出各种优惠活动&#xff0c;比如满减、打折、赠品等。然而&#xff0c;这些优惠活动的处理逻辑通常较为复杂&#xff0c;需要根据购物订单的条件进行判断和处理。本文将深入探讨职责链模式的实现方式&#…...

竞赛 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基…...

unexpected end of stream on

SpringCloud使用FeignClient调用第三方接口报错unexpected end of stream on ; 解决方法&#xff1a; 1.检查服务器端口是否被占用 lsof -i:端口&#xff1b; 2.nacos添加超时配置&#xff1a;...

【微信小程序篇】- 组件

最近自己在尝试使用AIGC写一个小程序&#xff0c;页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制&#xff0c;会经常出现对于需求理解跑偏情况&#xff0c;需要不断的重复强调&#xff0c;并纠正错误&#xff0c;才能得到你想要的…...

使用Sqoop命令从Oracle同步数据到Hive,修复数据乱码 %0A的问题

一、创建一张Hive测试表 create table test_oracle_hive(id_code string,phone_code string,status string,create_time string ) partitioned by(partition_date string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ,; 创建分区字段partition_date&#xff0c…...

NC Cloud uploadChunk文件上传漏洞复现

简介 NC Cloud是指用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。该产品uploadChunk文件存在任意文件上传漏洞。 漏洞复现 FOFA语法&#xff1a; app"用友-NC-Cloud" 访问页面如下所示&#xff1a; POC&#xff1a;/ncchr/pm/fb/…...

多标签页之间的通信

解决方案有两种思路&#xff1a;浏览器端解决方案、服务器端解决方案。 一、浏览器端解决方案&#xff1a; 思路&#xff1a;本地数据存储 <!-- index01.html --> <input id"name"> <input type"button" id"btn" value"…...

CI/CD -gitlab

目录 一、常用命令 二、部署 一、常用命令 官网&#xff1a;https://about.gitlab.com/install/ gitlab-ctl start # 启动所有 gitlab 组件 gitlab-ctl stop # 停止所有 gitlab 组件 gitlab-ctl restart # 重启所有 gitlab 组件 gitlab-ctl statu…...

AR眼镜_单目光波导VS双目光波导方案

双目光波导AR眼镜方案是一种创新的智能设备&#xff0c;可以在现实场景中叠加虚拟信息&#xff0c;提供增强的视觉体验和交互体验。光学显示方案是AR眼镜的核心技术之一&#xff0c;它对眼镜的性能和使用体验起着决定性的作用。 相比于单目AR眼镜&#xff0c;双目AR眼镜具有更好…...

golang 动态库 (buildmode)

目录 1. golang 动态库2. Golang 生成 C 动态库 .so 和静态库 .a2.1. 源代码2.2. 编译2.3. C2.4. 执行2.5. 如何生成静态库2.6. Go 调用 C 库2.6.1. 源代码 3. golang 语言使用动态库、调用动态链接库3.1. Go 插件系统3.2. 动态加载的优劣3.3. Go 的插件系统: Plugin3.4. 插件开…...

【mysql】2006 - Server has gone away

执行了一组插入语句 提示&#xff1a;2006 - Server has gone away&#xff1b; 2006-服务器已经消失&#xff1b; 消失去哪里了&#xff0c;被黑洞吞没了吗&#xff1f;&#xff01;&#xff01;&#xff01; 网络问题 网络不稳定&#xff1f;断网了&#xff1f;检查网络连…...

动态规划43(Leetcode91解码方法)

代码&#xff1a; class Solution {public int numDecodings(String s) {int n s.length();if(s.charAt(0)0)return 0;if(n1)return 1;int[] dp new int[n1];dp[0]1;dp[1]1;for(int i2;i<n;i){if(s.charAt(i-2)1){dp[i]dp[i-2];}else if(s.charAt(i-2)2&&s.charA…...

STM32电源名词解析

先来简单了解一下各种电源端口的命名 VCC&#xff1a;Ccircuit 表示电路的意思, 即接入电路的电压 VDD&#xff1a;Ddevice 表示器件的意思, 即器件内部的工作电压。 VSS&#xff1a;Sseries 表示公共连接的意思&#xff0c;通常指电路公共接地端电压。 GND&#xff1a;在电…...

openAI宫斗感想 chatGPT带给客户巨大利益的就是王者。王者终究会归来。技术人员不要总是想掌握所有核心技术并用到极致。

1.我很喜欢乔布斯用的iCEO&#xff0c;每个人的工作都是临时的&#xff0c;打掉铁饭碗才会有效率。有铁饭碗就容易使人怠慢、傲慢、嚣张、低效率的消耗自己和别人的生命。日本人为什么对每个人每个客户都毕恭毕敬&#xff0c;感觉因为他的饭碗都掌握在周围的人手里。 日本文化…...

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

参考&#xff1a;https://www.cnblogs.com/sam-snow-v/p/15917898.html eclipse链接SQL Server出现问题 笔者使用Open JDK 17&#xff0c;SQL Server 2016&#xff0c;项目中使用JPA操作数据库。测试环境没问题&#xff0c;生产环境出现如题所示“驱动程序无法通过使用安全套接…...

性能调优第一步:服务器硬件如何选型

硬件选型是调优的第一步&#xff0c;无论你是自行购买服务器进行托管&#xff0c;还是租用服务器&#xff0c;或者购买云主机&#xff0c;都要面临的一个问题&#xff0c;那就是选择服务器的硬件配置&#xff0c;因为没有一台服务器能满足所有需求&#xff0c;解决所有的问题。…...

Codewhisperer 使用评价

最近亚⻢逊推出了一款基于机器学习的 AI 编程助手 Amazon CodeWhisperer&#xff0c;可以实时提供代码建议。在编写代码时&#xff0c;它会自动根据现有的代码和注释给出建议。Amazon CodeWhisperer 与GitHub Copilot类似&#xff0c;主要的功能有: 代码补全注释和文档补全代码…...

结合scss实现黑白主题切换

是看了袁老师的视频后&#xff0c;自己做了一下练习。原视频地址&#xff1a; b站地址https://www.bilibili.com/video/BV15z4y1N7jB/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcec6cf63302f28d94ebc02cbedcecc57ea首先创建一个全局的scs…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...