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

【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】

【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】

题目

小强正在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码K(升序的不重复小写字母组成) 的箱子,并给出箱子编号,箱子编号为 1~N 。
每个箱子中都有一个 字符串s ,字符串由大写字母、小写字母、数字、标点符号、空格组成,需要在这些字符串中找到所有的字母,忽略大小写后排列出对应的密码串,并返回匹配密码的箱子序号。
提示:满足条件的箱子不超过1个。

输入描述

  • 第一行为 key 的字符串,

第二行为箱子 boxes,为数组样式,以空格分隔

箱子 N 数量满足 1 ≤ N ≤ 10000, s 长度满足 0 ≤ s.length ≤ 50, 密码为仅包含小写字母的升序字符串,且不存在重复字母, 密码 K 长度1 ≤ K.length ≤ 26

输出描述

  • 返回对应箱子编号

如不存在符合要求的密码箱,则返回 -1。

备注

  • 箱子中字符拼出的字符串与密码的匹配忽略大小写,且要求与密码完全匹配,如密码abc匹配aBc,但是密码abc不匹配abcd

用例

用例一:
输入:
abc
s,sdf134 A2c4b
输出:
2
用例二:
输入:
abc
s,sdf134 A2c4bd 523[]
输出:
1

python解法

  • 解题思路:
  • 这段代码的目标是从一组字符串(boxes)中找到第一个可以和输入的 key 匹配的箱子(匹配条件是两个字符串的字符可以完全重排成彼此,忽略大小写和非字母字符)。匹配时返回箱子的索引(从 1 开始),如果找不到匹配则返回 -1。

具体匹配条件:

对 key 按字母排序。
对每个箱子,过滤出其中的字母字符,转换为小写后排序。
比较 key 的排序结果和当前箱子过滤后排序的结果是否相同

# 读取输入 key 和 boxes 列表
key = input()  # 匹配的关键字符串
boxes = input().split()  # 多个箱子名称,以空格分隔def find_box_index(key, boxes):key_sorted = sorted(key)  # 对 key 字符串排序,作为匹配基准for i, box in enumerate(boxes):  # 遍历所有箱子# 过滤箱子中的字母字符,并转换为小写filtered_chars = [c.lower() for c in box if c.isalpha()]# 检查过滤后的字符排序是否与 key 的排序相同if key_sorted == sorted(filtered_chars):return i + 1  # 返回匹配箱子的索引(从 1 开始)return -1  # 如果没有匹配,返回 -1# 输出结果
print(find_box_index(key, boxes))

java解法

  • 解题思路
  • 这段代码的目标是从一组字符串(containers)中找到第一个可以与输入字符串 referenceKey 匹配的容器。匹配的条件是两个字符串的字符完全相同(忽略大小写和非字母字符),且字符顺序无关。匹配时返回容器的索引(从 1 开始),如果找不到匹配则返回 -1。

代码分为三个主要部分:

字符串预处理:过滤非字母字符,将字母转换为小写,并按字母顺序排序。
匹配逻辑:将 referenceKey 和每个容器经过相同的预处理后进行比较。
输出结果:根据匹配结果输出第一个匹配容器的索引或 -1。

import java.util.Scanner;
import java.util.Arrays;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取输入,预处理 referenceKeyString referenceKey = sanitizeAndSort(scanner.nextLine());// 读取 containers 列表,按空格分隔String[] containers = scanner.nextLine().split(" ");// 查找匹配索引int matchingIndex = findMatchIndex(referenceKey, containers);// 输出匹配结果System.out.println(matchingIndex);}/*** 预处理字符串:过滤非字母字符,转为小写,并排序** @param input 原始字符串* @return 经过排序和过滤后的字符串*/private static String sanitizeAndSort(String input) {// 去除非字母字符,转小写,转为字符数组char[] filteredChars = input.replaceAll("[^a-zA-Z]", "").toLowerCase().toCharArray();// 对字符数组排序Arrays.sort(filteredChars);// 转为字符串返回return new String(filteredChars);}/*** 在 containers 中查找第一个匹配 referenceKey 的索引** @param referenceKey 预处理后的参考字符串* @param containers 容器字符串数组* @return 第一个匹配的容器索引(从 1 开始),未找到返回 -1*/private static int findMatchIndex(String referenceKey, String[] containers) {for (int i = 0; i < containers.length; i++) {// 预处理当前容器String sortedBox = sanitizeAndSort(containers[i]);// 比较参考字符串与当前容器是否匹配if (referenceKey.equals(sortedBox)) {return i + 1; // 返回 1 基索引}}return -1; // 没有找到匹配,返回 -1}
}

C++解法

  • 解题思路
更新中

C解法

  • 解题思路

更新中

JS解法

  • 解题思路

更新中

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

相关文章:

【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】

【华为OD-E卷-寻找关键钥匙 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小强正在参加《密室逃生》游戏&#xff0c;当前关卡要求找到符合给定 密码K&#xff08;升序的不重复小写字母组成&#xff09; 的箱子&#xff0c;并给出箱子编号&#xff0c;箱子编…...

vscode 使用说明

文章目录 1、文档2、技巧显示与搜索宏定义和包含头文件 3、插件4、智能编写5、VSCode 与 C&#xff08;1&#xff09;安装&#xff08;2&#xff09;调试&#xff08;a&#xff09;使用 CMake 进行跨平台编译与调试&#xff08;b&#xff09;launch.json&#xff08;c&#xff…...

【Linux系统编程】:信号(2)——信号的产生

1.前言 我们会讲解五种信号产生的方式: 通过终端按键产生信号&#xff0c;比如键盘上的CtrlC。kill命令。本质上是调用kill()调用函数接口产生信号硬件异常产生信号软件条件产生信号 前两种在前一篇文章中做了介绍&#xff0c;本文介绍下面三种. 2. 调用函数产生信号 2.1 k…...

Android Studio AI助手---Gemini

从金丝雀频道下载最新版 Android Studio&#xff0c;以利用所有这些新功能&#xff0c;并继续阅读以了解新增内容。 Gemini 现在可以编写、重构和记录 Android 代码 Gemini 不仅仅是提供指导。它可以编辑您的代码&#xff0c;帮助您快速从原型转向实现&#xff0c;实现常见的…...

【day09】面向对象——静态成员和可变参数

【day08】面向对象——封装重点:1.封装:a.将细节隐藏起来,不让外界直接调用,再提供公共接口,供外界通过公共接口间接使用隐藏起来的细节b.代表性的:将一段代码放到一个方法中(隐藏细节),通过方法名(提供的公共接口)去调用private关键字 -> 私有的,被private修饰之后别的类不…...

Android学习(七)-Kotlin编程语言-Lambda 编程

Lambda 编程 而 Kotlin 从第一个版本开始就支持了 Lambda 编程&#xff0c;并且 Kotlin 中的 Lambda 功能极为强大。Lambda 表达式使得代码更加简洁和易读。 2.6.1 集合的创建与遍历 集合的函数式 API 是入门 Lambda 编程的绝佳示例&#xff0c;但在开始之前&#xff0c;我们…...

彻底认识和理解探索分布式网络编程中的SSL安全通信机制

探索分布式网络编程中的SSL安全通信机制 SSL的前提介绍SSL/TLS协议概述SSL和TLS建立在TCP/IP协议的基础上分析一个日常购物的安全问题 基于SSL的加密通信SSL的安全证书SSL的证书的实现安全认证获取对应的SSL证书方式权威机构获得证书创建自我签名证书 SSL握手通信机制公私钥传输…...

【libuv】Fargo信令2:【深入】client为什么收不到服务端响应的ack消息

客户端处理server的ack回复,判断链接连接建立 【Fargo】28:字节序列【libuv】Fargo信令1:client发connect消息给到server客户端启动后理解监听read消息 但是,这个代码似乎没有触发ack消息的接收: // 客户端初始化 void start_client(uv_loop_t...

Vue3自定义事件

自定义事件是一种组件间通信的方式&#xff0c;它允许子组件向父组件发送信息。子组件可以通过自定义事件向父组件传递数据以及事件&#xff0c;当自定义事件触发时&#xff0c;子组件可以借此将子组件的数据传递给父组件并使父组件对此做出相应的操作。 1.声明自定义事件 使…...

BeautifulSoup 与 XPath 用法详解与对比

BeautifulSoup&#xff08;bs4&#xff09; 和 XPath 是学习python爬虫过程中常常用到的库&#xff0c;本文将详细介绍它们的功能、使用方法、优缺点以及实际应用中的区别和选择建议。 1. BeautifulSoup 用法详解 1.1 什么是 BeautifulSoup&#xff1f; BeautifulSoup 是 Pyt…...

Emacs 折腾日记(五)——elisp 数字类型

本文是参考 emacs lisp 简明教程 写的&#xff0c;很多东西都是照搬里面的内容&#xff0c;如果各位读者觉得本文没有这篇教程优秀或者有抄袭嫌疑、又或者觉得我更新比较慢、再或者其他什么原因&#xff0c;请直接阅读上述链接中的教程。 上一篇我们讲了elisp中的流程控制结构相…...

重拾设计模式--外观模式

文章目录 外观模式&#xff08;Facade Pattern&#xff09;概述定义 外观模式UML图作用 外观模式的结构C 代码示例1C代码示例2总结 外观模式&#xff08;Facade Pattern&#xff09;概述 定义 外观模式是一种结构型设计模式&#xff0c;它为子系统中的一组接口提供了一个统一…...

源码编译llama.cpp for android

源码编译llama.cpp for android 我这有已经编译好的版本&#xff0c;直接下载使用&#xff1a; https://github.com/turingevo/llama.cpp-build/releases/tag/b4331 准备 android-ndk 已下载&#xff1a; /media/wmx/ws1/software/qtAndroid/Sdk/ndk/23.1.7779620版本 &am…...

StarRocks 排查单副本表

文章目录 StarRocks 排查单副本表方式1 查询元数据&#xff0c;检查分区级的副本数方式2 SHOW PARTITIONS命令查看 ReplicationNum修改副本数命令 StarRocks 排查单副本表 方式1 查询元数据&#xff0c;检查分区级的副本数 # 方式一 查询元数据&#xff0c;检查分区级的副本数…...

Windows11 家庭版安装配置 Docker

1. 安装WSL WSL 是什么&#xff1a; WSL 是一个在 Windows 上运行 Linux 环境的轻量级工具&#xff0c;它可以让用户在 Windows 系统中运行 Linux 工具和应用程序。Docker 为什么需要 WSL&#xff1a; Docker 依赖 Linux 内核功能&#xff0c;WSL 2 提供了一个高性能、轻量级的…...

线程知识总结(二)

本篇文章以线程同步的相关内容为主。线程的同步机制主要用来解决线程安全问题&#xff0c;主要方式有同步代码块、同步方法等。首先来了解何为线程安全问题。 1、线程安全问题 卖票示例&#xff0c;4 个窗口卖 100 张票&#xff1a; class Ticket implements Runnable {priv…...

解决vscode ssh远程连接服务器一直卡在下载 vscode server问题

目录 方法1&#xff1a;使用科学上网 方法2&#xff1a;手动下载 方法3 在使用vscode使用ssh远程连接服务器时&#xff0c;一直卡在下载"vscode 服务器"阶段&#xff0c;但MobaXterm可以正常连接服务器&#xff0c;大概率是网络问题&#xff0c;解决方法如下: 方…...

【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)

一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑&#xff0c;一个是外部特性&#xff0c;一个是内部特性。外部特性就是把电感视为一个黑盒子&#xff0c;带有两个端子&#xff0c;如果带有抽头的电感就有三个端子&#xff0c;需要去考虑其电感值、Q值和自…...

Definition of Done

Definition of Done English Version The team agrees on, a checklist of criteria which must be met before a product increment “often a user story” is considered “done”. Failure to meet these criteria at the end of a sprint normally implies that the work …...

【漏洞复现】CVE-2023-37461 Arbitrary File Writing

漏洞信息 NVD - cve-2023-37461 Metersphere is an opensource testing framework. Files uploaded to Metersphere may define a belongType value with a relative path like ../../../../ which may cause metersphere to attempt to overwrite an existing file in the d…...

UABEA:解锁Unity资源编辑新维度的跨平台工具箱

UABEA&#xff1a;解锁Unity资源编辑新维度的跨平台工具箱 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA 你是否曾想过深入Unity游戏内部&#xff0c;查看、编辑甚至重构其中的纹理、音频、字体等各类…...

如何快速掌握时空聚类:面向数据分析师的ST-DBSCAN终极指南

如何快速掌握时空聚类&#xff1a;面向数据分析师的ST-DBSCAN终极指南 【免费下载链接】st_dbscan ST-DBSCAN: Simple and effective tool for spatial-temporal clustering 项目地址: https://gitcode.com/gh_mirrors/st/st_dbscan 时空数据分析正成为现代数据科学的重…...

30美元终极方案:揭秘如何将普通眼镜快速改造成AI智能眼镜

30美元终极方案&#xff1a;揭秘如何将普通眼镜快速改造成AI智能眼镜 【免费下载链接】OpenGlass Turn any glasses into AI-powered smart glasses 项目地址: https://gitcode.com/GitHub_Trending/op/OpenGlass 你是否曾梦想拥有自己的智能眼镜&#xff0c;却被数千元…...

API的工作原理和机制

问题&#xff1a;API的工作原理和机制是什么&#xff1f; 这是一个技术解释类问题&#xff0c;需要清晰、系统地拆解。希望“深入”&#xff0c;所以不能停留在表面定义&#xff0c;需要从核心概念、交互模型、关键机制&#xff08;如协议、端点、请求响应结构、认证、状态等&…...

FLUX.1-dev保姆级教程:5分钟在ComfyUI中一键生成惊艳图片

FLUX.1-dev保姆级教程&#xff1a;5分钟在ComfyUI中一键生成惊艳图片 1. 为什么选择FLUX.1-dev&#xff1f; FLUX.1-dev是当前AI图像生成领域的明星模型&#xff0c;由Black Forest Labs开发。它最大的特点是能够生成具有照片级真实感的图像&#xff0c;同时保持了惊人的效率…...

如何解决OpenHTMLtoPDF在容器化环境中的字体加载NullPointerException问题

如何解决OpenHTMLtoPDF在容器化环境中的字体加载NullPointerException问题 【免费下载链接】openhtmltopdf An HTML to PDF library for the JVM. Based on Flying Saucer and Apache PDF-BOX 2. With SVG image support. Now also with accessible PDF support (WCAG, Section…...

2026年成都上门回收黄金新趋势:安全便捷更放心

随着经济的发展和人们生活水平的提高&#xff0c;黄金作为一种重要的投资和保值手段&#xff0c;越来越受到人们的青睐。然而&#xff0c;在黄金回收的过程中&#xff0c;用户常常面临诸多痛点&#xff0c;如价格不透明、流程复杂、门店选择困难等。为了解决这些问题&#xff0…...

为什么高端芯片都爱用Flip Chip?对比Wire Bonding的5大优势详解

为什么高端芯片都爱用Flip Chip&#xff1f;对比Wire Bonding的5大优势详解 在芯片封装领域&#xff0c;Flip Chip&#xff08;倒装芯片&#xff09;技术正逐渐成为高端应用的标配。想象一下&#xff0c;当你手持最新款智能手机&#xff0c;流畅运行着复杂的AI应用时&#xff0…...

Pandas 操作指南(一):DataFrame 的构建与表格数据组织

在数据分析与数据处理中&#xff0c;原始数据往往并不是一开始就以规范表格的形式出现。它可能来自列表&#xff08;list&#xff09;、字典&#xff08;dict&#xff09;、CSV/Excel 文件&#xff0c;或程序运行过程中临时生成的数据集合。若这些数据尚未被整理为结构明确的表…...

原神帧率解锁工具进程管理实战:解决启动冲突的3个鲜为人知的解决技巧

原神帧率解锁工具进程管理实战&#xff1a;解决启动冲突的3个鲜为人知的解决技巧 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 问题现象&#xff1a;启动失败的常见场景 当你双击原神…...