news 2026/6/15 17:05:37

(新卷,100分)- 5键键盘(Java JS Python)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 5键键盘(Java JS Python)

(新卷,100分)- 5键键盘(Java & JS & Python)

题目描述

有一个特殊的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 1 1
输出3
说明连续键入3个a,故屏幕上字母的长度为3。
输入1 1 5 1 5 2 4 4
输出2
说明

输入两个a后ctrl-a选择这两个a,再输入a时选择的两个a先被清空,所以此时屏幕只有一个a,

后续的ctrl-a,ctrl-c选择并复制了这一个a,最后两个ctrl-v在屏幕上输出两个a,

故屏幕上字母的长度为2(第一个ctrl-v清空了屏幕上的那个a)。

题目解析

逻辑题,主要考察多情况的处理。

题目中没有准确说明 选择状态 何时被解除,比如我ctrl-a全选所有字母时,然后ctrl-c将选择的字母复制到剪贴板,那么此时屏幕中字母的选中状态是保留还是清除呢?

我理解ctrl-x剪切走屏幕内容,没有字母了,自然就没有选中状态了。另外,a、ctrl-v输入时,如果有字母选中状态,则输入时会覆盖选中内容,那么选中状态就没了。

Java算法源码
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] commands = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray(); System.out.println(getResult(commands)); } public static int getResult(int[] commands) { ArrayList<String> screen = new ArrayList<>(); ArrayList<String> clip = new ArrayList<>(); boolean isSelect = false; for (int command : commands) { switch (command) { case 1: // a if (isSelect) screen.clear(); screen.add("a"); isSelect = false; break; case 2: // ctrl-c if (isSelect) { clip.clear(); clip.addAll(screen); } break; case 3: // ctrl-x if (isSelect) { clip.clear(); clip.addAll(screen); screen.clear(); isSelect = false; } break; case 4: // ctrl-v if (isSelect) screen.clear(); screen.addAll(clip); isSelect = false; break; case 5: // ctrl-a if (screen.size() != 0) isSelect = true; break; } } return screen.size(); } }
JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { const directives = line.split(" "); console.log(getFinalLetterCount(directives)); }); function getFinalLetterCount(directives) { const screen = []; const clip = []; let isSelect = false; directives.forEach((directive) => { switch (directive) { case "1": // a if (isSelect) screen.length = 0; screen.push("a"); isSelect = false; break; case "2": // ctrl-c if (isSelect) { clip.length = 0; clip.push(...screen); } break; case "3": // ctrl-x if (isSelect) { clip.length = 0; clip.push(...screen); screen.length = 0; isSelect = false; } break; case "4": // ctrl-v if (isSelect) screen.length = 0; screen.push(...clip); isSelect = false; break; case "5": // ctrl-a if (screen.length !== 0) isSelect = true; break; } }); return screen.length; }
Python算法源码
# 输入获取 commands = list(map(int, input().split())) # 算法入口 def getResult(): screen = [] clip = [] isSelect = False for command in commands: if command == 1: if isSelect: screen.clear() screen.append("a") isSelect = False elif command == 2: if isSelect: clip.clear() clip.extend(screen) elif command == 3: if isSelect: clip.clear() clip.extend(screen) screen.clear() isSelect = False elif command == 4: if isSelect: screen.clear() screen.extend(clip) isSelect = False elif command == 5: if len(screen) != 0: isSelect = True return len(screen) # 调用算法 print(getResult())
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 11:32:38

1 人公司 + 智能体军团:流量、内容、营销、变现体系

1 人公司 智能体军团&#xff1a;流量、内容、营销、变现体系工作流创业核心&#xff0c;是必须全面激活潜在的用户市场批量引导/教育&#xff0c;培养自己的花园&#xff0c;拥有自己的空间顾客引导流程认识-认知缺什么?认知-认同缺什么?认同-认购缺什么?认购-认定缺什么?…

作者头像 李华
网站建设 2026/6/15 11:30:21

社会网络仿真软件:NetLogo_(8).NetLogo在社会网络建模中的应用

NetLogo在社会网络建模中的应用 在上一节中&#xff0c;我们介绍了NetLogo的基本功能和界面布局&#xff0c;并通过简单的示例展示了如何创建和运行基本模型。本节将深入探讨NetLogo在社会网络建模中的应用&#xff0c;介绍如何使用NetLogo来构建和分析复杂的社会网络模型。 1.…

作者头像 李华
网站建设 2026/6/15 12:40:15

社会网络仿真软件:NetLogo_(10).社会网络动力学分析

社会网络动力学分析 社会网络动力学分析是研究社会网络中节点和边随时间变化的规律和机制。在NetLogo中&#xff0c;我们可以利用其强大的建模和仿真能力来探索和分析社会网络的动力学特性。本节将详细介绍如何在NetLogo中进行社会网络动力学分析&#xff0c;包括网络结构的变化…

作者头像 李华
网站建设 2026/6/15 12:40:38

计算机毕设Java基于微信小程序的餐厅点餐系统的设计与实现 基于微信小程序的Java餐厅点餐系统开发与实践 Java技术驱动的微信小程序餐厅点餐系统设计

计算机毕设Java基于微信小程序的餐厅点餐系统的设计与实现c1a249 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着信息技术的飞速发展&#xff0c;餐饮行业的数字化转型已成…

作者头像 李华
网站建设 2026/6/10 2:21:19

计算机毕设Java基于JAVA的酒水销售系统 基于Java技术的酒水销售与管理系统开发 Java驱动的酒水销售平台设计与实现

计算机毕设Java基于JAVA的酒水销售系统y2y339&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着电子商务的蓬勃发展&#xff0c;传统的酒水销售模式已难以满足现代企业的需求。…

作者头像 李华