2023华为OD机试真题-寻找关键钥匙(JAVA、Python、C++)

2023-10-27

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

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

提示:
满足条件的箱子不超过1个

输入描述:
第一行为key的字符串,第二行为箱子boxes,为数组样式,以空格分隔
箱子N数量满足1<=N<=10000,
s长度满足 0<=s.length<=50,
密码为仅包含小写字母的升序字符串,且不存在重复字母,
密码K长度K.length,1<=K.length<=26
输出描述:
返回对应箱子编号
如不存在符合要求的密码箱,则返回-1
补充说明:
箱子中字符拼出的字符串与密码的匹配忽略大小写,且要求与密码完全匹配,如密码abc匹配aBc,但是密码abc不匹配abcd
 收起
示例1
输入:
abc
s,sdf134 A2c4b
输出:
2
说明:
第2个箱子中的Abc,符合密码abc
示例2
输入:
abc
s,sdf134 A2c4bd 523[]
输出:
-1
说明:
第2个箱子中的Abcd,与密码不完全匹配,不符合要求

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
            char[] pwd = in.nextLine().toCharArray();
            String input = in.nextLine();
            String[] box = input.split(" ");
            boolean getMatch = false;
            for (int i = 0; i < box.length; i++) {
                char[] result = box[i].replaceAll("[^(A-Za-z)]","").toLowerCase().toCharArray();
                Arrays.sort(result);
                if (isPwdCorrect(pwd, result)) {
                    getMatch = true;
                    System.out.println(i + 1);
                }
            }
            if (!getMatch) {
                System.out.println("-1");
            }
        }
    }
     
    private static boolean isPwdCorrect(char[] pwd, char[] input) {
        if (pwd.length != input.length) {
            return false;
        }
        for (int i = 0; i < pwd.length; i++) {
            if (pwd[i] != input[i]) {
                return false;
            }
        }
        return true;
    }
}
import re
 
key = input().lower()
boxes = list(input().split())
matched = False
 
for i in range(len(boxes)):
    if len(boxes[i]) > 50:
        pass
    password = "".join(sorted(list(set("".join(re.findall('[a-zA-Z]', boxes[i])).lower()))))
    if password == key:
        print(i + 1)
        matched = True
        break
 
if not matched:
    print(-1)
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
    string key;
    vector<string> arr;
    //arr.resize(10000);
    cin>>key;
    string tmp,trs;
    //int count = 0;
    while(cin>>tmp){
        //arr[count++] = tmp;
        arr.push_back(tmp);
    }
    for (int i = 0; i<arr.size(); ++i){
        tmp.assign(arr[i]);
        trs.clear();
        for(int j=0; j<tmp.size();++j){
            char val = tmp[j];
            if (val >= 'a' && val <= 'z' ){
                trs += tmp[j];
            } else if (val >= 'A' && val <= 'Z') {
                trs += (val - 'A' + 'a');
            } else {
                continue;
            }
        }
        //paixu
        bool A[26] = {false};
        for(int m=0;m<trs.size();++m){
            A[trs.at(m) - 'a'] = true;
        }
        trs.clear();
        for(int n=0;n<26;++n){
            if(A[n] == true){
                trs+=('a'+n);
            }
        }
        arr[i] = trs;
    }
 
    for(int i=0; i<arr.size();++i){
        if (arr[i].length() != key.length()) continue;
        for(int j=0; j<key.length();++j){
            if (key.at(j) != arr[i].at(j)) break;
            if (j == key.length()-1){
                cout<<i+1<<endl;
                return 0;
            }
        }
    }
    cout<<-1<<endl;
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2023华为OD机试真题-寻找关键钥匙(JAVA、Python、C++) 的相关文章

随机推荐

  • jmeter版本不支持的 jdk版本 解决办法

    在win7上安装了apache jmeter 2 11和jdk1 8 0 20 配置成功后 点击jmeter bat报错 截图如下 在网上搜索说是要注释掉set DUMP XX HeapDumpOnOutOfMemoryError 可是注释
  • 为什么你的pycharm打开时很卡,今天来教你解决方案

    相信很多刚开始使用pycharm不太熟练的小伙伴 每天一开机打开pycharm总是卡半天 不知道的还以为是电脑卡了或者啥问题的 莫慌 其实并不是 今天我们就来解决一下这个问题 大致总结了以下这几种方法 1 exclude不必要文件 依次打开
  • Redis使用总结(四、处理延时任务)

    引言 在开发中 往往会遇到一些关于延时任务的需求 例如 生成订单30分钟未支付 则自动取消 生成订单60秒后 给用户发短信 对上述的任务 我们给一个专业的名字来形容 那就是延时任务 那么这里就会产生一个问题 这个延时任务和定时任务的区别究竟
  • vue router进行路由跳转并携带参数(params/query)

    在使用 router push 进行路由跳转到另一个组件时 可以通过 params 或 query 来传递参数 1 使用 params 传参 在路由跳转时传递参数 router push name targetComponent param
  • 元宇宙通证-八、人类科技发展史全景长图

    八 人类科技发展史全景长图 人类科技发展史是人类认识自然 改造自然的历史 也是人类文明史的重要组成部分 科技在人类文明进程中起着至关重要的作用 制造和使用工具以及技术的传承 是人类生存的模式 是被人类社会所实践的 人类自身的进化成功很大程度
  • Java language

    Java Java is a high level general purpose object oriented programming language The main design goals of the language wer
  • qt连接oracle数据库经验总结

    利用qt连接oracle数据库实战经验 之前公司用qt开发的产品中 使用的数据库为mysql和sql server 并未用qt连接过 oracle数据库 因此 只能通过百度查资料的方式解决问题 注意 使用qt连接oracle数据库 即使远程
  • 启元世界内推招聘(对标阿里P6-P7)

    推荐系统架构师 岗位职责 负责游戏推荐系统的需求分析 系统设计 负责应用系统平台的可行技术设计 方案 指导和优化技术选型 负责推荐算法策略线上化 系统化实现在线服务 优化平台线上性能 负责线上平台的稳定性保障 负责推动应用系统的技术升级与研
  • 懂编译真的可以为所欲为

    作者 闲鱼技术 玉缜 背景 整个前端领域在这几年迅速发展 前端框架也在不断变化 各团队选择的解决方案都不太一致 此外像小程序这种跨端场景和以往的研发方式也不太一样 在日常开发中往往会因为投放平台的不一样需要进行重新编码 前段时间我们需要在淘
  • SAE安装第三方插件

    参考官网 http sae sina com cn doc python tools html saecloud 首先要安装sae python dev 1 3 2 tar gz 然后把官网的原话copy上来 在应用目录中执行下面的命令安装
  • 点云密度计算方法matlab,点云中的几何计算及matlab源码

    1 计算法向量 2 计算曲率 曲线的曲率 curvature 就是针对曲线上某个点的切线方向角对弧长的转动率 通过微分来定义 表明曲线偏离直线的程度 数学上表明曲线在某一点的弯曲程度的数值 曲率越大 表示曲线的弯曲程度越大 曲率的倒数就是曲
  • jdbc:mysql:replication_使用Mysql的Replication功能实现数据库同步

    本文档仅在于实验Mysql的Replication功能 没有考虑权限等其他问题 用于实验的服务器和客户机请使用没有安装过Mysql的计算机 如果安装过Mysql请卸载 请按照下面的顺序依次进行 改变顺序可能导致实验失败 1 在下面地址下载免
  • 会议OA项目---我的审批(审批&会议签字)

    目录 一 会议审批 二 会议签字 三 签名裁剪 一 会议审批 我的审批 实体类MeetingAudit package com zking entity import java io Serializable import java uti
  • C语言经典例题-贷款余额

    编程计算第一 第二 第三个月还贷后剩余的贷款金额 include
  • Revit二次开发——选集

    选集 选集 用户选集 过滤的用户选集 选集 选择图元后运行外部命令获取选择的内容 Revit API中定义了单选 多选 框选等方式的用户选集 用户可以十分方便的使用鼠标和键盘完成这三种方式的图元选择 Revit API根据三种用户选集各自的
  • 设系统中有三种类型的资源(A,B,C)的五个进程(P1,P2,P3,P4,P5)。A资源的数量为17,B资源的数量为5,C资源的数量为20。在T0时刻系统状态如表所示。

    银行算法应用 题目 设系统中有三种类型的资源 A B C 的五个进程 P1 P2 P3 P4 P5 A资源的数量为17 B资源的数量为5 C资源的数量为20 在T0时刻系统状态如表所示 系统采用银行家算法实施死锁避免策略 试问 1 T0时刻
  • centos7启动服务uthorization not available. Check if polkit service is running or see debug message for

    事件经过 有一次远程帮助别人解决的一个问题 当时那个人给发了一个samba服务启动报错的截图 还有一个翻译图 报错信息中提到了一个polkit服务 下面先普及一下关于这个服务的知识 polkit是一个应用程序级别的工具集 通过定义和审核权限
  • 浅析存储引擎(3)-B-tree

    浅析日志结构的存储引擎 1 bitcask浅析日志结构的存储引擎 2 SSTable和LSM Tree 前面两篇文章介绍了比较好理解的日志结构引擎LSM Tree 但它们不是最常见的索引类型 目前最广泛使用的索引结构是B tree B tr
  • input函数和int函数的使用

    第一 input函数接受一个标准输入数据 返回str类型 第二 int函数可以把str强制转换为整形 第三 int input ps 最近搞深度学习的视频 但是依然需要实操
  • 2023华为OD机试真题-寻找关键钥匙(JAVA、Python、C++)

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定 密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串