华为OD机试真题 JavaScript 实现【火星文计算】【2022Q2 100分】,附详细解题思路

news2024/10/6 2:02:48

在这里插入图片描述

一、题目描述

已知火星人使用的运算符为#、$,其与地球人的等价公式如下:

x#y = 2*x+3*y+4

x$y = 3*x+y+2

  1. 其中x、y是无符号整数;
  2. 地球人公式按C语言规则计算;
  3. 火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算;

现有一段火星人的字符串报文,请你来翻译并计算结果。

二、输入描述

火星人字符串表达式(结尾不带回车换行)

输入的字符串说明:字符串为仅由无符号整数和操作符(#、$)组成的计算表达式。

例如:123#4$5#67$78

用例保证字符串中,操作数与操作符之间没有任何分隔符。 用例保证操作数取值范围为32位无符号整数。 保证输入以及计算结果不会出现整型溢出。 保证输入的字符串为合法的求值报文,例如:123#4$5#67$78 保证不会出现非法的求值报文,例如类似这样字符串:

  1. #4$5 //缺少操作数
  2. 4$5# //缺少操作数
  3. 4#$5 //缺少操作数
  4. 4 $5 //有空格
  5. 3+4-5*6/7 //有其它操作符
  6. 1234567898765
  7. 4321$54321 //32位整数计算溢出

三、输出描述

根据输入的火星人字符串输出计算结果(结尾不带回车换行)。

输入

7#6$5#12

输出

226

示例说明:

7#6$5#12
=7#(36+5+2)#12
=7#25#12
=(2
7+325+4)#12
=93#12
=2
93+3*12+4
=226

四、解题思路

题目要求根据火星人的字符串表达式进行计算,其中火星人的运算符为#和$,与地球人的等价公式如下:

x#y = 2*x+3*y+4
x$y = 3*x+y+2

地球人的公式按照C语言规则计算,而火星人的公式中,$的优先级高于#,相同的运算符按照从左到右的顺序计算。

算法流程:

  1. 读取输入的火星人字符串表达式;
  2. 定义一个递归函数get(String n),用于计算火星人表达式的值;
  3. 在get函数中,首先判断字符串中是否存在#运算符,如果存在,则将字符串分为左右两部分,分别进行递归计算,然后按照公式2 * get(left) + 3 * get(right) + 4进行计算,返回结果;
  4. 如果字符串中不存在#运算符,则判断是否存在$运算符,如果存在,则按照公式3 * get(left) + get(right) + 2进行计算,返回结果;
  5. 如果字符串中既不存在#运算符也不存在$运算符,则将字符串转换为整数并返回;
  6. 在主函数中,使用get函数计算火星人字符串表达式的值,并输出结果。

五、JavaScript算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while (sc.hasNextLine()) {
        String n = sc.nextLine();
        System.out.println(get(n));
    }
    sc.close();
}

private static int get(String n) {
    int i = n.lastIndexOf("#");
    if (i != -1) {
        String left = n.substring(0, i);
        String right = n.substring(i + 1);
        return 2 * get(left) + 3 * get(right) + 4;
    }
    i = n.lastIndexOf("$");
    if (i != -1) {
        String left = n.substring(0, i);
        String right = n.substring(i + 1);
        return 3 * get(left) + get(right) + 2;
    }
    return Integer.parseInt(n);
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

YOLOv5/7 更换 DIoU-NMS

文章目录 NMS原理介绍DIoU-NMS效果展示NMS 耗时对比YOLOv5 更换方式YOLOv7 更换方式NMS原理介绍 在执行目标检测任务时,算法可能对同一目标有多次检测。NMS 是一种让你确保算法只对每个对象得到一个检测框的方法。 在正式使用NMS之前,通常会有一个候选框预清理的工作(简单引…

二、微机保护的结构框图原理

在实际应用中,微机保护装置分为单CPU和多CPU的结构方式。在中、低压变电所中多数简单的保护装置采用单CPU结构,而在高压及超高压变电所中复杂保护装置广泛采用多CPU的结构方式。 (一)单 CPU的结构原理 单CPU的微机保护装置是指整套…

5.3.1 因特网的路由协议(一)

5.3.1 因特网的路由协议(一) 我们知道因特网在现实生活中的应用非常广泛,我们可以进行网络聊天、查询资料,购物等,他给我们的现实生活带来了极大地方便,我们已经知道互联网是由一个个经过路由器连接的网络…

Java设计模式(八)— 单例模式3

系列文章目录 单例模式之静态内部类 单例模式之枚举方式 单例模式之JDK源码分析 文章目录 系列文章目录前言一、单例—静态内部类1.静态内部类案例2.静态内部类优缺点 二、单例—枚举方式1.枚举方式案例2.枚举方式优缺点 三、单例—JDK源码分析1.JDK源码分析 四、单例模式注意…

Java同步容器和并发容器

同步容器 在 Java 中,同步容器主要包括 2 类: Vector、Stack、HashTable Vector 实现了 List 接口,Vector 实际上就是一个数组,和 ArrayList 类似,但是 Vector 中的方法都是 synchronized 方法,即进行了同…

大型企业的知识库是什么结构的?真的有用吗?

大型企业的知识库是指建立在企业内部的一个包含各种知识和信息的系统,它可以帮助企业更好地管理和利用企业内部的知识资源,提高企业的创新能力和竞争力。 知识库的结构和内容包括以下几个方面 一、知识分类和标签化 在建立知识库之前,企业…

哪款佩戴舒适的蓝牙耳机好?公认佩戴舒适度高的蓝牙耳机推荐

现如今,蓝牙耳机越多人使用,不同于有线耳机,蓝牙耳机更为方便,没有线束的困扰,走到哪也不用带上手机一起,特别便利。然而,随着蓝牙耳机市场的扩大,各种类型各种样式的耳机五花八门&a…

骨传导蓝牙耳机怎么用,分享几款不错的骨传导耳机

骨传导技术是利用振动将声音转化为不同频率的机械振动,通过人的颅骨、骨迷路、内耳淋巴液传递、螺旋器、听神经、听觉中枢来传递声波。相比传统耳机,它在运动时使用,不会损伤到我们的听力。它不需要入耳佩戴,佩戴更舒适健康。 骨传…

悄悄告诉你有什么免费的ai绘画工具

是不是每次看到一幅美丽的画作,你都会心生羡慕,想要自己也能创造出那样的艺术品?别担心,现在有了ai绘画工具,你也可以轻松成为一位小小画家!这些神奇的工具不仅能够帮助你发挥创造力,还能让你玩…

SQL Server 中count方法和case when语句配合使用中的问题

概要 我们在使用SQL Server生成报表统计数据的时候,经常使用sum,count等聚合函数,有时候还会配合case when语句一边执行过滤操作,一边进行聚合。 本文介绍一个在使用中的常见的错误和解决方法。 设计和实现 下面是一张订单记录…

【链表复习】C++ 链表复习及题目解析 (2)

目录 牛客 CM11 链表分割 牛客 OR36 之链表的回文结构 Leetcode 160. 相交链表 LeetCode 141. 环形链表 LeetCode 138. 复制带随机指针的链表 本文继续延续前文,为大家带来几道经典的链表中等难度的题目。 牛客 CM11 链表分割 现有一链表的头指针 ListNode* p…

探索iOS之Metal标准库

Metal标准库包括&#xff1a;通用函数、整型函数、关系函数、数学函数、矩阵运算、SIMD运算、几何函数、纹理函数等。接下来让我们走进Metal标准库的世界。 1、通用函数 通用函数在<metal_common>头文件中&#xff0c;T为scalar或vector的浮点类型。如下表所示&#xf…

公司最大的内卷,是OKR驱动

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID&#xff1a;jishulingdaoli) 去年5月&#xff0c;以善用OKR独步江湖的Google公司宣布将对 Google 员工的绩效管理方式进行改革——Google 开始使用一种名为 GRAD 的新绩效评估流程。据了解&#xff0c;这一调整主要是基于员工对谷…

集权设施管理-AD域安全策略(二)

活动目录&#xff08;AD&#xff09;凭借其独特管理优势&#xff0c;从众多企业管理服务中脱颖而出&#xff0c;成为内网管理中的佼佼者。采用活动目录来管理的内网&#xff0c;称为AD域。 了解AD域&#xff0c;有助于企业员工更好地与其它部门协作&#xff0c;同时提高安全意…

算法练习5:二进制字符串前缀一致的次数

给你一个长度为 n 、下标从 1 开始的二进制字符串&#xff0c;所有位最开始都是 0 。我们会按步翻转该二进制字符串的所有位&#xff08;即&#xff0c;将 0 变为 1&#xff09;。 给你一个下标从 1 开始的整数数组 flips &#xff0c;其中 flips[i] 表示对应下标 i 的位将会在…

docker容器 - 卷(volume)- 挂载

目录 参考文档&#xff1a;Volumes | Docker Documentation 什么是卷&#xff08;volume&#xff09;&#xff1f; 什么是挂载&#xff0c;它的作用是什么&#xff1f; 一台机器里的多个容器之间共享数据&#xff08;使用挂载&#xff09; 首先我们可以使用最简单的docker …

预训练、微调和上下文学习

最近语言模型在自然语言理解和生成方面取得了显著进展。这些模型通过预训练、微调和上下文学习的组合来学习。在本文中将深入研究这三种主要方法&#xff0c;了解它们之间的差异&#xff0c;并探讨它们如何有助于语言模型的学习过程。 预训练 预训练&#xff08;Pre-training&…

RadEx Pro处理电火花数据操作步骤(上)

最近单位采集了很多的电火花测线&#xff0c;同事在使用GeoSuite AllWorks 2022R1处理这些测线的时候&#xff0c;发现二次波对地层辨识和划分干扰比较严重。GeoSuite AllWorks 压制二次波的能力有限&#xff0c;有人推荐我们试一试地震处理软件RadEx Pro。 两个中文文档“RadE…

7--Gradle进阶 - settings.gradle的文件说明

7--Gradle进阶 - settings.gradle的文件说明 前言 介绍 settings.gradle 文件之前&#xff0c;先来说明一下&#xff0c;settings.gradle 主要是用来多模块工程使用的。 所以我们先来创建一个多模块的工程。 多模块工程创建 1. 创建 root 工程 1.1 配置本地 Gradle 1.2 配置依赖…

一口总结了金九银十(P5-P7 级)1000 多道 Java 面试题,20+ 大厂必考点及 Java 面试框架知识点

Java 面试 “金九银十”这个字眼对于程序员应该是再熟悉不过的了&#xff0c;每年的金九银十都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它…