华为OD机试 -密室逃生游戏(C++ Java JavaScript Python )

本文介绍了华为OD机考中的一道密室逃生游戏题目,玩家需找到符合特定密-码的箱子。题目要求在字符串中找出所有字母并排序,与给定密-码匹配。提供了C++、JavaScript、Java和Python四种语言的解决方案,并对算法进行了分析,讨论了可能的优化策略。
摘要由CSDN通过智能技术生成

题目描述

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

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

输入描述

第一行为 key 的字符串,
第二行为箱子 boxes,为数组样式,以空格分隔

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

输出描述

返回对应箱子编号
如不存在符合要求的密-码箱,则返回 -1。

用例

输入 abc
s,sdf134 A2c4b
输出 2
说明 第 2 个箱子中的 Abc ,符合密-码 abc。

题目解析

简单题,最简单的就是双重for循环,统计字符数量,在和key的数量对比。大于等于,则说明当前box就是可以匹配密-码的箱子,返回当前箱子的序号。如果一直找不到,则返回-1。

但是不知道会不会超时:另一种就是

先将key转成数组,进行字典序排序

外层循环依旧遍历每个box,

如果box.length < key.length,则肯定不行,直接下次循环。

如果box.length >= key.length,则先将box转为小写模式,然后将box转为数组字典序排序,接下来利用两个指针k,j,分别从key的0索引位置,和box的0索引位置开始扫描,如果扫描到的key[

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值