如何在华为OD机试中获得满分?Java实现【寻找关键钥匙】一文详解!

news2024/11/25 0:27:21

请添加图片描述

✅创作者:陈书予
🎉个人主页:陈书予的个人主页
🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区
🌟专栏地址: Java华为OD机试真题(2022&2023)

文章目录

  • 1. 题目描述
  • 2. 输入描述
  • 3. 输出描述
  • 4. Java算法源码
  • 5. 测试
  • 6.解题思路

1. 题目描述

小强正在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码K(升序的不重复小写字母组成)的箱子,并给出箱子编号,箱子编号为1~N。

每个箱子中都有一个字符串s,字符串由大写字母,小写字母,数字,标点符号,空格组成,需要在这些字符串中找出所有的字母,忽略大小写后排列出对应的密码串,并返回匹配密码的箱子序号

提示:

满足条件的箱子不超过1个。

2. 输入描述

第一行为key的字符串,第二行为箱子boxes,为数组样式,以空格分隔,箱子N数量满足1<=N<=10000,s长度满足 0<=s.length<=50,密码为仅包含小写字母的升序字符串,且不存在重复字母,密码K长度K.length,1<=K.length<=26。

3. 输出描述

返回对应箱子编号。

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

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

4. Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String line1 = sc.nextLine();
    String line2 = sc.nextLine();
    String[] boxArr = line2.split(" ");

    int result = -1;
    for (int i = 0; i < boxArr.length; i++) {
        StringBuilder builder = new StringBuilder();
        String box = boxArr[i];
        for (int j = 0; j < box.length(); j++) {
            char current = box.charAt(j);
            char lower = Character.toLowerCase(current);
            if (lower >= 'a' && lower <= 'z') {
                builder.append(lower);
            }
        }
        char[] arr = builder.toString().toCharArray();
        Arrays.sort(arr);
        String temp = String.valueOf(arr);
        if (temp.equals(line1)) {
            result = i + 1;
            break;
        }
    }
    System.out.println(result);
}

5. 测试

在这里插入图片描述

6.解题思路

在这里插入图片描述

  1. 首先读取输入的密码字符串 line1 和箱子数组 boxArr
  2. 初始化变量 result 为 -1,用于记录匹配密码的箱子序号,默认为不存在符合要求的密码箱。
  3. 使用循环遍历每个箱子:
    • 初始化一个字符串构建器 builder 用于存储箱子中的字母。
    • 遍历箱子中的每个字符:
      • 将当前字符转换为小写字母。
      • 如果转换后的字符是小写字母,则将其添加到字符串构建器中。
    • 将字符串构建器转换为字符数组,并对字符数组进行排序。
    • 将排序后的字符数组转换为字符串 temp
    • 如果 temp 与密码字符串 line1 相等,则说明找到了符合要求的密码箱,将 result 设置为当前箱子的序号,然后跳出循环。
  4. 输出 result,即为对应的箱子编号。
  5. 如果循环结束后仍然没有找到符合要求的密码箱,则输出 -1 表示不存在。

在这里插入图片描述

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

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

相关文章

使用compose desktop构建桌面应用

使用compose desktop构建桌面应用时遇到的一些坑 官方指导移步&#xff1a;多平台开发说明&#xff0c;我这里只写一些自己遇到问题 我在mac机器开发&#xff0c;然后使用githubAction构建的win平台的包&#xff0c;现记录一下遇到的问题 构建文件build.gradle编写不同平台的程…

SAM-MM-配额协议字段解析

1、有效起始日&#xff1a;配额协议的生效日期&#xff0c;系统默认为当前创建日期&#xff0c;灰色&#xff0c;不可更改&#xff1b; 2、有效至&#xff1a;配额协议的失效日期&#xff0c;要手动填一个日期&#xff1b; 3、最小数量拆分&#xff1a;如果要按照配额比例&am…

.NET面向AI编程——SK框架(SemanticKernel)的简易入门实践

前言&#xff1a;随着ChatGPT开始在各个领域遍地开花&#xff0c;有关的应用也开始层出不穷。随着微软开源SK框架&#xff0c;无疑是给.NET开发者带来面向AI应用的新机遇。以下内容&#xff0c;通过创建一个简单的prompt开始&#xff0c;开发一个使用SK框架进行开发的入门教程&…

xss跨站之waf绕过及安全修复(28)

手工探针xss绕过waf规则 打开靶场 写入跨站测试语句发现拦截 这里就做一个最经典的方法&#xff0c;做一个关键字拆分来确立拦截的是什么东西。 去掉最后字符串&#xff0c;访问还是拦截&#xff0c;再去掉alert&#xff08;1&#xff09;&#xff0c;访问还是拦截&#xff…

八大排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(上)

目录 前言 直接插入排序&#xff08;Insertion Sort&#xff09; 一、概念及其介绍 二、过程图示 三、代码 四、复杂度 希尔排序&#xff08;Shell Sort&#xff09; 一、概念 二、实现思路 三、图示过程 四、代码 4.1代码 4.2运行结果 4.3解释 五、复杂度 堆排…

华为诺亚实验室VanillaNet学习笔记

华为诺亚实验室VanillaNet学习笔记 VanillaNet: the Power of Minimalism in Deep Learning Abstract 基础模型的核心理念是“多而不同”&#xff0c;计算机视觉和自然语言处理领域的惊人成功就是例证。然而&#xff0c;优化的挑战和变压器模型固有的复杂性要求范式向简单性…

Linux:finalshell虚拟机与真实机的上传和下载;rz、sz

使用命令rz上传的速度会比拖拽上传的速度慢

Day3:Windows网络编程-UDP

对比TCP与UDP的通信区别 UDP Server没有listen()和accept() TCP Server #include <iostream> #include <WinSock2.h> // 包含网络库 #pragma comment(lib,"ws2_32.lib") using namespace std;int main() {// 1. 初始化套接字 初始化套接字库cout <&l…

Qt编写视频监控系统76-Onvif跨网段组播搜索和单播搜索的实现

一、前言 在视频监控行业一般会用国际onvif工具来测试设备是否支持onvif协议&#xff0c;工具的名字叫ONVIF Device Manager&#xff08;还有个工具叫ONVIF Device Test Tool&#xff0c;专用于程序员测试各种数据交互&#xff09;&#xff0c;可以自行搜索下载&#xff0c;此…

linux网桥简单理解和持久化配置

文章目录 前言一、Linux 网桥是什么&#xff1f;二、网桥主要作用三、网桥配置命令及安装(CentOS系统)1 网桥配置命令2.持久化网桥配置 前言 linux bridge是网络虚拟化中非常重要的一种设备&#xff0c;今天就来学习下linux bridge的相关知识 一、Linux 网桥是什么&#xff1…

Allegro操作规范

光绘输出操作规范 1.1添加钻孔表 添加钻孔表的具体步骤为: 1.通过屏幕右边的Visibility选项的Views列表,将Drill层打开 2.将Visibility选项中的PIN和Via选项都选中,见下图所示: 1.2添加钻孔文件 参数设好之后关闭NC Drill/Parameters窗口,输出数控机床钻孔文件的命…

企业域名与企业邮箱:提升企业形象的必备选择

在商业中&#xff0c;你最不想做的就是把注意力从业务上移开&#xff0c;去担心一些小事——比如电子邮件。大多数免费的企业电子邮件账户偷工减料&#xff0c;因此无法交付货物。在Zoho我们围绕您的需求设计了我们的平台&#xff0c;以创建优于其他工作电子邮件地址的电子邮件…

jQuery-从左到右、从右到左

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>从左到右、从右到左</title> <style type"text/css"> select { …

采购申请审批测试

采购申请审批的配置并不难&#xff0c;但是总会有原因导致业务无审批策略&#xff0c;而且这个配置也比较脆弱&#xff0c;有时同步也会出现问题&#xff0c;小编利用这篇操作记录下测试结果。 1、项目类别的审批策略分类 下图是审批策略分类-项目类别不给值&#xff0c;测试…

LAMP架构中的安装论坛

前言&#xff1a;本次操作依赖于LAMP的环境已经配置完全&#xff0c;网站也是依赖于开发人员现有的网站包框架&#xff0c;实施在LAMP已搭建好的环境进行安装部署 目录 一、对mysql进行操作 创建数据库&#xff0c;并进行授权 二、解压论坛压缩包 三、初步访问安装 解决…

少年,你可听说过MVCC?

&#xff1a;切&#xff01;这谁没听过&#xff0c;不就是多版本并发控制么~ 早在亘古时期&#xff0c;修真界就流传着一门mysql功法&#xff0c;将其修至小乘境界&#xff0c;足以纵横一方。。。不乏也有走火入魔者&#xff0c;为祸一方~ Serializable篇 强制事务排序&#…

【MCS-51】中断系统原理及应用

中断是单片机中一个十分重要的功能&#xff0c;它的出现能够让我们的单片机在顺序执行命令时&#xff0c;具备应对特殊情况的能力。 目录 &#x1f319;通信方式 &#x1f343;无条件传送 &#x1f343;有条件传送 &#x1f343;DMA通信 &#x1f343;中断传送 &#x1…

python计算程序开始、结束以及运行的时间

python 计算程序运行的耗时&#xff0c;主要有三种方法&#xff1a; time.time() 、 time.perf_counter() 和 datetime.datetime.now()方法 使用方法如下&#xff1a; 1. time.time() import time start time.time() # 程序开始时间,单位为秒 print("start_time:&…

C++ [STL之list的使用]

本文已收录至《C语言和高级数据结构》专栏&#xff01; 作者&#xff1a;ARMCSKGT 前言 vector是一片连续的空间&#xff0c;在数据访问上性能较好&#xff0c;但是任意位置插入删除性能较低&#xff0c;头插头删性能亦是如此&#xff1b;此时在这种需要频繁插入的场景下&…

PCL计算法向量结果不对的问题

一、点云&#xff08;高程渲染。CC计算的法向量&#xff0c;Z分量渲染&#xff09; 高程渲染 法向量Z分量的绝对值渲染 二、PCL计算法向量 下面是PCL计算法向量的代码&#xff08;点类型自己设置的&#xff09; 计算出的法向量有正有负 void pclNormalEstimation(pcl::Point…