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

仿LISP运算 - 华为OD机试真题(A卷、JavaScript题解)

华为OD机试题库《C++》限时优惠 9.9

华为OD机试题库《Python》限时优惠 9.9

华为OD机试题库《JavaScript》限时优惠 9.9

针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。

看不懂有疑问需要答疑辅导欢迎私VX: code5bug

华为OD机试真题

题目描述

LISP 语言唯一的语法就是括号要配对。形如 (OP P1 P2 …),括号内元素由单个空格分割。其中第一个元素 OP 为操作符,后续元素均为其参数,参数个数取决于操作符类型。注意:参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …) ,当前 OP 类型为 add / sub / mul / div(全小写),分别代表整数的加减乘除法,简单起见,所有 OP 参数个数均为 2 。

举例:

输入:(mul 3 -7)
输出:-21 
输入:(add 1 2) 
输出:3 
输入:(sub (mul 2 4) (div 9 3)) 
输出 :5
输入:(div 1 0) 
输出:error

题目涉及数字均为整数,可能为负;不考虑 32 位溢出翻转,计算过程中也不会发生 32 位溢出翻转,除零错误时,输出 “error”,除法遇除不尽,向下取整,即 3/2 = 1

输入描述

输入为长度不超过512的字符串,用例保证了无语法错误

输出描述

输出计算结果或者"error"

示例1

输入:
(div 12 (sub 45 45))输出:
error

示例2

输入:
(add 1 (div -7 3))输出:
-2

题解

使用递归方法来解析和计算LISP表达式。具体步骤如下:

  1. 解析表达式:将输入的字符串解析成操作符和参数。参数可能是数字或其他嵌套的表达式。
  2. 递归计算:对于每个操作符,递归计算其参数的值。如果参数是嵌套的表达式,继续递归解析和计算。
  3. 处理操作:根据操作符的类型执行相应的算术操作。处理除法时,需检查除数是否为零,若为零则返回错误。
  4. 错误处理:在计算过程中,任何除数为零的情况都应立即返回错误。

JavaScript

const rl = require('readline').createInterface({input: process.stdin,output: process.stdout,
});var iter = rl[Symbol.asyncIterator]();const readline = async () => (await iter.next()).value;function evaluate(expr) {// 移除最外层的括号并分割const content = expr.slice(1, -1).trim();const parts = [];let buffer = '';let parenLevel = 0;for (const char of content) {if (char === '(') {parenLevel++;buffer += char;} else if (char === ')') {parenLevel--;buffer += char;} else if (char === ' ' && parenLevel === 0) {parts.push(buffer);buffer = '';} else {buffer += char;}}if (buffer !== '') {parts.push(buffer);}const op = parts[0];const operands = parts.slice(1);if (operands.length !== 2) {throw new Error('Invalid operands count');}const parseOperand = (operand) => {if (operand.startsWith('(')) {return evaluate(operand);} else {return parseInt(operand, 10);}};const a = parseOperand(operands[0]);const b = parseOperand(operands[1]);switch (op) {case 'add':return a + b;case 'sub':return a - b;case 'mul':return a * b;case 'div':if (b === 0) {throw new Error('Division by zero');}return Math.floor(a / b);default:throw new Error('Unknown operator');}
}// Author: code5bug
(async () => {const input = await readline();try {const result = evaluate(input);console.log(result);} catch (e) {console.log('error');}rl.close();
})();

整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

相关文章:

仿LISP运算 - 华为OD机试真题(A卷、JavaScript题解)

华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难,效率慢,我们提供一对一算法辅导, 针对个人情况定制化的提高计划(全称1V1效率更高)。 看…...

数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能

DHTMLX Pivot数据透视表能快速地对数据进行计数、总计、平均和执行许多其他操作。近日,DHTMLX Pivot发布了2.1版本,该版本扩展了开发人员通过新增的 CSS 样式选项、HTML 模板以及数字和日期的自定义格式修改表格外观的能力。此外,该版本还增加…...

简易的考试系统设计(Web实验)

简易的考试系统设计(Web实验) 1.实验内容与设计思想(一)实验需求(二)设计思路 2.代码展示3.实验小结 1.实验内容与设计思想 (一)实验需求 1.编写两个页面程序,一个HTML…...

C++之set和map的运用

目录 序列式容器和关联式容器 熟识set 在STL中的底层结构: set的构造和迭代器 set的增删查 multiset和set的差异 练习题: 熟识map map类的介绍 pair类型介绍 map的构造 map的增删查 map的数据修改 测试样例: multimap和map的差…...

基于智能家居项目 RGB彩灯(P9813)

一、P9813 是什么? P9813 是一颗专门用来控制 RGB LED灯珠 的芯片,也就是说,它能控制红色、绿色、蓝色三种灯光的亮度,从而调出各种颜色。它最常见的用途就是在各种“会变色”的灯带中。 它的通信方式非常简单,只需要…...

EMQX 作为 MQTT Broker,支持 ​MQTT over TCP​ 和 ​MQTT over WebSocket​ 两种协议

1. EMQX 支持的协议与端口​ 协议类型默认端口用途说明​MQTT over TCP​1883标准的 MQTT 协议,基于 TCP 传输(用于后端服务、物联网设备等)。​MQTT over TLS​8883加密的 MQTT over TCP(TLS/SSL 加密,安全性更高&am…...

软件测试学习笔记

第1章 绪论 软件测试 本质上说,就是寻找软件的缺陷、错误,对其质量度量的方法与过程。软件测试的一切活动都围绕着两个目标(验证是否符合需求,识别差异)而行进。它是测试思维、策略方针、设计实施的基本出发点。 学…...

Vue3 + Node.js 实现客服实时聊天系统(WebSocket + Socket.IO 详解)

Node.js 实现客服实时聊天系统(WebSocket Socket.IO 详解) 一、为什么选择 WebSocket? 想象一下淘宝客服的聊天窗口:你发消息,客服立刻就能看到并回复。这种即时通讯效果是如何实现的呢?我们使用 Vue3 作…...

python 上海新闻爬虫

1. 起因, 目的: 继续做新闻爬虫。我之前写过。此文先记录2个新闻来源。后面打算进行过滤,比如只选出某一个类型新闻。 2. 先看效果 过滤出某种类型的新闻,然后生成 html 页面,而且,自动打开这个页面。 比如科技犯罪…...

【Axure高保真原型】中继器表格批量上传数据

今天和大家分享中继器表格批量上传数据的原型模板,效果包括: 点击上传按钮,可以真实的打开本地文件夹选择文件; 选择的文件如果不是表格格式(xls、xlsx、xlt、csv),就会显示提示弹窗&#xff1…...

复刻低成本机械臂 SO-ARM100 单关节控制(附代码)

视频讲解: 复刻低成本机械臂 SO-ARM100 单关节控制(附代码) 代码仓库:GitHub - LitchiCheng/SO-ARM100: Some Test code on SO-ARM100 昨天用bambot的web的方式调试了整个机械臂,对于后面的仿真的sim2real来说&#x…...

视频编解码学习7之视频编码简介

视频编码技术发展历程与主流编码标准详解 视频编码技术是现代数字媒体领域的核心技术之一,它通过高效的压缩算法大幅减少了视频数据的体积,使得视频的存储、传输和播放变得更加高效和经济。从早期的H.261标准到最新的AV1和H.266/VVC,视频编码…...

【NextPilot日志移植】整体功能概要

整体日志系统的实现功能 该日志系统主要实现了飞行日志的记录功能,支持多种日志记录模式,可将日志存储到文件或通过 MAVLink 协议传输,同时具备日志加密、空间管理、事件记录等功能。具体如下: 日志记录模式:支持按武…...

Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)

1.配置 Zookeeper 进入解压后的 Zookeeper 目录(例如 F:\zookeeper\conf),复制 zoo_sample.cfg 文件并命名为 zoo.cfg(如果 zoo.cfg 已经存在,则直接编辑该文件)。 打开 zoo.cfg 文件,配置相关…...

《构建社交应用用户激励引擎:React Native与Flutter实战解析》

React Native凭借其与JavaScript和React的紧密联系,为开发者提供了一个熟悉且灵活的开发环境。在构建用户等级体系时,它能够充分利用现有的前端开发知识和工具。通过将用户在社交应用中的各种行为进行量化,比如发布动态的数量、点赞评论的次数…...

Oracle OCP认证考试考点详解083系列13

题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 61. 第61题: 题目 解析及答案: 关于基于RPM的Oracle数据库安装,以下哪两项是正确的? A) …...

【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展

GitHub: https://github.com/zxmfke/deepwiki-md-chrome-extension 背景 个人比较喜欢整理项目架构,更多都是保存成 markdown 的格式保存,然后发博客。deepwiki 刚好把 github 仓库代码的架构输出出来了,不过没有办法下载成 markdown 格式&…...

HTTP 状态码是服务器对客户端请求的响应标识,用于表示请求的处理结果

以下是完整的 HTTP 状态码分类和常见状态码详解: 一、状态码分类(5大类) 分类范围描述常见场景1xx100-199信息性响应请求已被接收,继续处理2xx200-299成功响应请求成功处理3xx300-399重定向响应需要进一步操作4xx400-499客户端错…...

【AI论文】FlexiAct:在异构场景中实现灵活的动作控制

摘要:动作定制涉及生成视频,其中主体执行由输入控制信号指示的动作。 当前的方法使用姿势引导或全局运动定制,但受到空间结构(如布局、骨架和视点一致性)严格约束的限制,降低了在不同主题和场景下的适应性。…...

ubuntu24.04安装anaconda

1. ubuntu安装ananconda 进入官网:添加链接描述 直接点击Download下载,它会自动匹配合适的版本 打开保存下载文件,点击右键,选择在终端打开,输入 bash Anaconda3-2024.10-1-Linux-x86_64.sh不断点击Enter&#xff0c…...

六、Hadoop初始化与启动

成功部署一个Hadoop集群并不仅仅是安装好软件那么简单。在它真正能够为我们处理海量数据之前,还需要一系列精心的初始化和启动步骤。这些步骤确保了各个组件能够正确协同工作。完成启动后,Hadoop还提供了便捷的 Web 用户界面 (Web UI),帮助我…...

边缘网关(边缘计算)

边缘网关是边缘计算架构中的关键组件,充当连接终端设备(如传感器、IoT设备)与云端或核心网络的桥梁。它在数据源头附近进行实时处理、分析和过滤,显著提升效率并降低延迟。 核心功能 协议转换 ○ 支持多种通信协议(如…...

学成在线之课程管理

一:业务概述 我负责的课程管理这一块,可以发布课程,可以对课程列表进行一个管理,发布课程这分为三步:首先是需要进行填写课程相关的信息,再设计这个课程的大纲,最后是选择发布这门课程&#xff…...

python里面的class,类,方法,函数,def

一、ds 好的!我将用专业术语结合通俗解释来梳理这些概念,并用结构化方式呈现它们的关系: 1. 核心概念解析 类 (Class) 定义:类是面向对象编程(OOP)中的核心概念,是创建对象的模板(蓝图)。它封装了一组属性(数据)和方法(行为),用于描述具有相同特征和功能的对象…...

复盘20250508

根据行业趋势、政策支持、公司基本面及技术壁垒,我推荐以下两支最可能持续上涨的个股,并深度分析原因: 1. 奥普光电(机器视觉光刻机芯片) 核心逻辑: 光刻机国产化核心标的:控股股东长春光机所…...

数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )

一:B- 树 1.1 B- 树的引入 在使用二叉搜索树对数据进行排序时,存在一个缺陷:随着数据量的增大,二叉搜索树的高度也会随之增加。虽然在数据量较小时,这种情况并不明显,但当数据量变得庞大时,树…...

算法与数据结构 - 常用图算法总结

在图论中,图算法非常重要,广泛应用于计算机科学、网络分析、社交网络、地理信息系统等领域。下面是一些常用的图算法,按不同功能和应用场景分类: 1. 图的遍历 图遍历算法用于遍历图中的节点和边。主要有两种常见的图遍历方法&am…...

涨薪技术|0到1学会性能测试第53课-Tomcat配置

前面的推文我们掌握了Tomcat服务器的3种监控技术知识。今天给大家分享Tomcat调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 01Tomcat配置 当Tomcat服务器安装好并开始运行后,需要对服务器进行一些基本配置,通常关于Tomcat服务器的配置包括两部分: 第一:…...

亚马逊推出新型仓储机器人 Vulcan:具备“触觉”但不会取代人类工人

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

后退n帧协议

滑动窗口机制(Sliding Window) 发送方有一个发送窗口,最多可以连续发送 N 个未确认的帧(N 就是窗口大小)。 接收方通常只有一个接收窗口,只接收按序到达的帧,不接受乱序帧。 累计确认机制&…...

R9周:RNN实现阿尔茨海默病诊断

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、导入数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import torch import torch.nn as nn f…...

node.js 实战——在express 中将input file 美化,并完成裁剪、上传进度条

美化上传按钮 在ejs 页面 <!DOCTYPE html> <html> <head><meta charset"utf-8"></meta><title><% title %></title><link relstylesheet href/stylesheets/form.css/><!-- 本地 Bootstrap 引入方式 -->…...

Linux环境下部署MaxScale

测试环境&#xff1a;两台服务器&#xff0c;Mysql版本 8.0&#xff0c;linux版本&#xff1a;Ubuntu 20.04.3&#xff1b; 介绍 在我之前的文章里面有介绍MySql主从服务器的配置&#xff0c;我们项目通常使用.NET开发Server端&#xff0c;如果是代码直接去管理主从服务器的访…...

新能源汽车CAN通信深度解析:MCU、VCU、ECU协同工作原理

1. 什么是CAN通信&#xff1f; CAN&#xff08;Controller Area Network&#xff0c;控制器局域网&#xff09; 是一种广泛应用于汽车电子系统的串行通信协议&#xff0c;由德国Bosch公司在1980年代开发&#xff0c;主要用于实现车内电子控制单元&#xff08;ECU&#xff09;之…...

按句子切分文本、保留 token 对齐信息、**适配 tokenizer(如 BERT)**这种需求

在之前的文章中我解释了 把长文本切分成一句一句的小段&#xff08;chunk&#xff09;&#xff0c;每一段尽量是一个完整的句子&#xff0c;而不是强行按字数截断。 但是这个方法自己写会比较复杂&#xff0c;有很多处理这种场景的工具可以直接拿来用。 下面就 处理按句子切分…...

缓存(1):三级缓存

三级缓存是指什么 我们常说的三级缓存如下&#xff1a; CPU三级缓存Spring三级缓存应用架构&#xff08;JVM、分布式缓存、db&#xff09;三级缓存 CPU 基本概念 CPU 的访问速度每 18 个月就会翻 倍&#xff0c;相当于每年增⻓ 60% 左右&#xff0c;内存的速度当然也会不断…...

Kubernetes client-go 客户端类型与初始化指南

Kubernetes client-go 客户端类型与初始化指南 在 Kubernetes 的 client-go 库中&#xff0c;存在多种客户端用于与 API 服务器交互。以下介绍主要客户端类型&#xff0c;包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底层 REST 客户端&#xff0c;直接…...

【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来

一、引言 在数字化转型的时代洪流中&#xff0c;数据已跃升为企业的核心资产&#xff0c;宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理&#xff0c;到战略决策的高瞻远瞩制定&#xff1b;从客户关系管理的深度耕耘&#xff0c;到供应链优化的全面协同&…...

图漾相机——Sample_V2示例程序(待补充)

文章目录 1.SDK支持的平台类型1.1 Windows 平台1.2 Linux平台 2.Sample_V2编译流程2.1 Windows环境2.2 Linux环境编译 3.Sample_V2示例程序测试3.1 ListDevice_v23.2 DepthStream_v23.3 ExposureTimeSetting_v23.4 ForceDeviceIP_v23.5 GetCalibData_v23.6 NetStatistic_v23.7 …...

手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理

目录 引言 自定义调度器&#xff08;Scheduler&#xff09; 什么是调度器&#xff1f; 调度器的实现原理 自定义调度器的实际应用 切面编程&#xff08;AOP&#xff09;思想在调度器中的应用 递归调用规避 递归调用的问题 Vue 如何规避递归调用 深度代理&#xff08;D…...

WPF实时调试的一种实现方法

在WPF程序中&#xff0c;如果我们需要对程序进行调试&#xff0c;一般是使用断点/单步或输出日志之类的调试方法。 如果我们需要实时查看程序输出&#xff0c;可以将程序的输出类型修改为控制台应用程序 这样我们在程序运行后&#xff0c;就可以得到一个控制台窗口。 然后再配…...

数据库操作

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…...

学习笔记:数据库——事务

1.内容&#xff1a; 基于现有数据库设计检查点实验&#xff0c;观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录&#xff08;客户ID为10002&#xff09; INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...

企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析

文章目录 前言1. 安装Docker2. 创建并启动OpenObserve容器3. 本地访问测试4. 公网访问本地部署的OpenObserve4.1 内网穿透工具安装4.2 创建公网地址 5. 配置固定公网地址 前言 嘿&#xff0c;各位小伙伴们&#xff0c;今天要给大家揭秘一个在云原生领域里横扫千军的秘密法宝—…...

【Linux系统】第三节—权限

Hello&#xff0c;好久不见—— 云边有个稻草人-CSDN个人博客主页 Linux-本节文章所属专栏-欢迎订阅-持续更新中~~~ 目录 hi&#xff01;在这里—本节课重要知识点详解 一、Shell命令以及运行原理 二、Linux权限 2.1 Linux权限的概念 2.2 Linux权限管理 2.3 ⽂件权限值的…...

@Data和 @NoArgsConstructor注解详解

Data 和 NoArgsConstructor 注解详解 1. Data 注解 作用&#xff1a;Data 是 Lombok 提供的一个复合注解&#xff0c;用于自动生成 Java 类的常用方法&#xff0c;减少样板代码。生成的内容&#xff1a; Getter 和 Setter&#xff1a;为所有非静态、非 final 字段生成 getter…...

《云计算》第三版总结

《云计算》第三版总结 云计算体系结构 云计算成本优势 开源云计算架构Hadoop2.0 Hadoop体系架构 Hadoop访问接口Hadoop编程接口 Hadoop大家族 分布式组件概述ZooKeeperHbasePigHiveOozieFlumeMahout 虚拟化技术 服务器虚拟化存储虚拟化网络虚拟化桌面虚拟化OpenStack开源虚…...

滚珠导轨:电子制造领域精密运动的核心支撑

电子制造正朝着高精度、高效率方向飞速发展&#xff0c;滚珠导轨在这一进程中扮演着重要角色。滚珠导轨在电子制造领域中具有广泛且重要的应用&#xff0c;主要体现在以下几个方面&#xff1a; 1、印刷电路板&#xff08;PCB&#xff09;制造设备&#xff1a;滚珠导轨在PCB制造…...

Spark缓存--cache方法

在Spark 中&#xff0c;cache() 是用于优化计算性能的核心方法之一&#xff0c;但它有许多细节需要深入理解。以下是关于 cache() 的详细技术解析&#xff1a; 1. cache() 的本质 简化的 persist()&#xff1a;cache() 是 persist(StorageLevel.MEMORY_ONLY) 的快捷方式&#x…...

kafka logs storage

Kafka 会将日志文件按段&#xff08;Segment&#xff09;存储。 Segment是Kafka的最小存储单元&#xff0c;它是一个可追加的文件&#xff0c;用于存储Kafka分区中的一部分消息。 在文件系统中&#xff0c;Partition 是目录名&#xff0c;而Segment 是文件名。 Segment可以通过…...