华为OD机试真题B卷 JavaScript 实现【5键键盘的输出】,附详细解题思路

news2024/11/25 2:20:09

在这里插入图片描述

一、题目描述

有一个特殊的5键键盘,上面有a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。

a键在屏幕上输出一个字母a;ctrl-c将当前选择的字母复制到剪贴板;ctrl-x将当前选择的字母复制到剪贴板,并清空选择的字母;ctrl-v将当前剪贴板里的字母输出到屏幕;ctrl-a选择当前屏幕上的所有字母。

注意:

  1. 剪贴板初始为空,新的内容被复制到剪贴板时会覆盖原来的内容;
  2. 当屏幕上没有字母时,ctrl-a无效;
  3. 当没有选择字母时,ctrl-c和ctrl-x无效;
  4. 当有字母被选择时,a和ctrl-v这两个有输出功能的键会先清空选择的字母,再进行输出;

给定一系列键盘输入,输出最终屏幕上字母的数量。

二、输入描述

输入为一行,为简化解析,用数字1 2 3 4 5代表a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键的输入,数字用空格分隔。

三、输出描述

输出一个数字,为最终屏幕上字母的数量。

四、解题思路

  1. 定义三个字符串变量:screen、choose、temp,分别表示屏幕上的字母、选择的字母、剪贴板中的字母;
  2. 读取输入的数字指令,使用split方法将其拆分为字符串数组;
  3. 遍历字符串数组,对每个数字指令执行相应的操作;
  4. 根据当前数字指令的值,使用switch语句判断执行的操作:
    • case 1: 表示按下’a’键。如果选择的字母为空,则将’a’添加到屏幕上的字母中;否则,清空选择的字母,将’a’作为新的屏幕上的字母。
    • case 2: 表示按下’ctrl-c’键。将当前选择的字母复制到剪贴板中(存储到temp变量)。
    • case 3: 表示按下’ctrl-x’键。将当前选择的字母复制到剪贴板中(存储到temp变量),并清空选择的字母和屏幕上的字母。
    • case 4: 表示按下’ctrl-v’键。如果选择的字母为空,则将剪贴板中的字母添加到屏幕上的字母中;否则,清空选择的字母,将剪贴板中的字母作为新的屏幕上的字母。
    • case 5: 表示按下’ctrl-a’键。将当前屏幕上的所有字母作为选择的字母。
  5. 循环结束后,输出屏幕上字母的数量,即screen的长度。

该算法模拟了特殊的5键键盘的操作流程,根据输入的数字指令执行相应的操作,并记录屏幕上的字母。最后输出屏幕上字母的数量。算法的时间复杂度为O(n),其中n为输入数字指令的数量。

五、JavaScript算法源码

let screen = '';
let choose = '';
let temp = '';

function input(num) {
    switch (num) {
        case 1: // a键
            if (choose === '') {
                screen += 'a';
            } else {
                choose = '';
                screen = 'a';
            }
            break;
        case 2: // ctrl-c键
            temp = choose;
            break;
        case 3: // ctrl-x键
            temp = choose;
            choose = '';
            screen = '';
            break;
        case 4: // ctrl-v键
            if (choose === '') {
                screen += temp;
            } else {
                screen = temp;
                choose = '';
            }
            break;
        case 5: // ctrl-a键
            choose = screen;
            break;
        default:
            break;
    }
}

function calculate(inputStr) {
    const arr = inputStr.trim().split(' ');

    for (let i = 0; i < arr.length; i++) {
        const num = parseInt(arr[i]);
        if (!isNaN(num) && num >= 1 && num <= 5) {
            input(num);
        } else {
            console.log('输入不合法,请输入1~5之间的数字!');
            rl.close();
            return;
        }
    }

    return screen.length
}

六、效果展示

1、输入

1 1 1 5 2 4 1 4

2、输出

7

3、说明

aaa、ctrl-a、ctrl-c、ctrl-v、a、ctrl-v = aaaaaaa

在这里插入图片描述


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

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

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

在这里插入图片描述

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

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

相关文章

【算法系列之哈希表I】leetcode15. 三数之和

242.有效的字母异位词 力扣题目链接 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 **注意&#xff1a;**若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 输入: s "anagram", t "nag…

快来给你个人微信公众号认个证吧

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 作者安全运维学习答疑交流群&#xff1a;请关注公众号回复【学习交流群】 今天我一改往日&#xff0c;不谈技术只谈谈关于个人公众号认证流程&#xff0c;突然感觉自己有点不务正业了&#xf…

go语言学习——9

文章目录 goroutine概念goroutine调度模型 channelchannel介绍定义/声明channelchannel的关闭channel遍历channel其他细节 goroutine 前言&#xff1a;统计1~90000000数字中&#xff0c;哪些是素数&#xff1f; 使用循环&#xff0c;很慢使用并发或者并行的方式&#xff0c;将任…

【数据结构】二叉树(二)

目录 一、二叉树链式结构及实现 1、二叉树的结构 2、二叉树的遍历 2.1 前序遍历 2.2 中序遍历 2.3 后序遍历 2.4 层序遍历 3、二叉树链式结构的实现 3.1 创建一个节点 3.2 二叉树节点个数 3.3 二叉树叶子节点个数 3.4 二叉树的高度 3.5 二叉树第k层节点个数 3.6 二叉树查找值…

数据库管理-第八十二期 EMCC升级教程(20230607)

数据库管理 2023-06-07 第八十二期 EMCC升级教程1 升级EMCC1.1 升级概览1.2 拷贝相关文件1.3 升级OPatch1.4 升级OMSPatcher1.5 升级WLS1.6 升级OMS 2 升级Agent2.1 升级概览2.2 拷贝相关文件2.3 安装或升级AgentPatcher2.4 升级agent 3 升级Oracle数据库ASH包总结 第八十二期 …

什么时候适合加一层?

加一层能解决问题&#xff1a; 为什么加一层能解决问题&#xff1f; 什么时候适合加一层&#xff1f; 销售说不吵的&#xff0c; 道路检测说没有超标。 业主就是睡不着。 吃瓜群众说你为啥买那边的房子。 销售说开发商骗他&#xff0c;他也是受害者。 结果没问题&#xff0…

CSS 样式语言 选择器

CSS介绍 层叠样式表&#xff0c;是一种样式表语言&#xff0c;用来描述HTML和XML文档的呈现。随着HTML的发展&#xff0c;为了满足页面设计者的要求&#xff0c;HTML添加了很多显示功能&#xff0c;但是随着这些功能的增加&#xff0c;使得HTML越来越杂乱&#xff0c;HTML 页面…

「企业安全架构」EA874:安全需求,愿景、原则和流程

安全需求愿景 在开始任何安全架构工作之前&#xff0c;定义安全需求是很重要的。这些需求应该受到业务上下文和通用需求远景文档的影响。下面是一个图表&#xff0c;它显示安全需求是企业信息安全体系结构中业务上下文的一部分。 图1 安全需求远景&#xff08;SRV&#xff09;有…

Android系统原理性问题分析 - 系统 Root 的实现原理

声明 在Android系统中经常会遇到一些系统原理性的问题&#xff0c;在此专栏中集中来讨论下。Android低版本时经常听说Root系统&#xff0c;随着Android版本的升高&#xff0c;提Root的人越来越少了。不过我在系统开发时也有客户提出为系统Root的需求&#xff0c;所以在这里分析…

【产品经理】用户增长方法论

在做用户增长为核心的产品运营推广前&#xff0c;我们应从几个方面入手——打造核心功能点、转化方式要清晰、用户反馈与转化、传播渠道要合适、建立病毒式传播规则。 2017年&#xff0c;以营销见长的可口可乐公司将设置了24年之久的首席营销官&#xff08;CMO&#xff09;撤销…

[Maven高级]->近万字文章带你深入了解Maven

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;JavaEE ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&…

已经安装高版本CUDA的条件下bitsandbytes发现低版本的CUDA SETUP: Detected CUDA version 100解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Zabbix 配置钉钉报警

如有错误&#xff0c;敬请谅解&#xff01; 此文章仅为本人学习笔记&#xff0c;仅供参考&#xff0c;如有冒犯&#xff0c;请联系作者删除&#xff01;&#xff01; 1. 创建服务群【手机钉钉】|【电脑钉钉】- 右上角【】-【发起群聊】-【选人建群】/选择不同的群类型创建&…

数据库信息速递 甲骨文与微软合作,在Azure上推出数据库服务

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

Linux搭建配置jdk开发环境

因为ZooKeeper、Hadoop和Spark等大数据应用的运行需要Java环境的支持&#xff0c;所以需要我们来安装配置一下jdk环境。 安装步骤如下&#xff1a; 下载JDK 访问Oracle官网下载Linux x64操作系统的JDK安装包jdk-8u161-linux-x64.tar.gz。 上传JDK安装包 通过SecureCRT远程连接…

chatgpt赋能python:Python的数据存储:理解Python的内存管理机制

Python的数据存储&#xff1a;理解Python的内存管理机制 Python是一种高级编程语言&#xff0c;广泛用于开发Web应用程序、机器学习和数据科学等。作为一门动态语言&#xff0c;Python的内存管理机制是其优点之一。这篇文章将探讨Python如何内部存储数据&#xff0c;介绍Pytho…

pytorch ddp 范例

pytorch ddp 范例&#xff1a; ################ ## main.py文件 import argparse from tqdm import tqdm import torch import torchvision import torch.nn as nn import torch.nn.functional as F # 新增&#xff1a; import torch.distributed as dist from torch.nn.paral…

从零开始手搓一个STM32与机智云的小项目——GPIO的输入输出

文章目录 前言GPIO简介GPIO的命名与数量GPIO的功能STM32F1 GPIO的寄存器 库函数开发搭建库函数的工程查看原理图WACK_UP输入按键继电器输出138控制流水灯 代码编写库函数简介GPIO输出模式控制继电器通过138控制ledGPIO实现按键输入的操作编写逻辑代码 实物效果 总结 前言 上一…

Redis学习总结(二)

AOF 为什么是在执行完命令之后记录日志&#xff1f; 关系型数据库&#xff08;如 MySQL&#xff09;通常都是执行命令之前记录日志&#xff08;方便故障恢复&#xff09;&#xff0c;而 Redis AOF 持久化机制是在执行完命令之后再记录日志。AOF 记录日志过程为什么是在执行完命…

如何让GPT不再胡说八道

相信我们大部分人在使用GPT的时候&#xff0c;会发现GPT经常在胡言乱语、回复错误的答案等情况&#xff0c;甚至有的内容牛头不对马嘴&#xff0c;直接开始编造&#xff0c;例如下面案例&#xff1a; 我&#xff1a; 周树人是谁 GPT&#xff1a;周树人 (1897年-1975年) &…