华为OD机考双机位C卷 - 寻找密码 (Java & Python & JS & GO & C++ & C)
寻找密码
2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷
华为OD机试双机位C卷真题目录点击查看: 【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)
题目描述
小王在进行游戏大闯关,有一个关卡需要输入一个密码才能通过,密码获得的条件如下:
在一个密码本中,每一页都有一个由26个小写字母组成的若干位密码,每一页的密码不同,需要从这个密码本中寻找这样一个最长的密码,
从它的末尾开始依次去掉一位得到的新密码也在密码本中存在。
请输出符合要求的密码,如果有多个符合要求的密码,则返回 字典序最大 的密码。
若没有符合要求的密码,则返回 空字符串 。
输入描述
密码本由一个字符串数组组成,不同元素之间使用空格隔开,每一个元素代表密码本每一页的密码。
输出描述
一个字符串
用例
| 输入 | h he hel hell hello |
|---|---|
| 输出 | hello |
| 说明 | 无 |
| 输入 | b ereddred bw bww bwwl bwwlm bwwln |
|---|---|
| 输出 | bwwln |
| 说明 | 无 |
题目解析
与 【华为OD机试 2023】真正的密码(C++ Java JavaScript Python) 类似
解题思路
这个问题的解题思路可以分为以下几个步骤:
-
输入处理 :首先,从输入中读取密码本,并将其分割为一个字符串列表。这个列表包含了密码本中的所有密码。
-
遍历密码本 :接下来,遍历密码本中的每个密码。对于每个密码,我们需要检查它是否满足题目中的条件。
-
检查密码是否有效 :为了检查一个密码是否有效,我们需要从它的末尾开始,依次去掉一位,得到一个新的密码。然后,我们需要检查这个新密码是否在密码本中存在。如果所有这些新密码都在密码本中存在,那么这个密码就是有效的。否则,这个密码是无效的。
为了实现这个检查过程,我们可以使用一个循环,从密码的末尾开始,依次去掉一位。在每次循环中,我们检查新密码是否在密码本中。如果发现新密码不在密码本中,我们可以将一个布尔变量(例如
is_valid)设置为False,并跳出循环。这样,循环结束后,is_valid变量的值就表示当前密码是否有效。 -
收集有效密码 :在遍历密码本的过程中,每当我们发现一个有效的密码,就将其添加到一个新的列表(例如
valid_passwords)中。这个列表用于存储所有有效的密码。 -
排序有效密码 :遍历密码本并收集有效密码之后,我们需要对
valid_passwords列表进行排序。题目要求返回字典序最大的密码,所以我们需要对列表进行降序排序。这样,字典序最大的密码就会排在列表的第一个位置。 -
输出结果 :最后,我们需要输出结果。如果
valid_passwords列表非空,说明至少有一个有效的密码。此时,我们可以输出列表中的第一个密码,即字典序最大的密码。如果列表为空,说明没有符合条件的密码,此时我们需要输出空字符串。
浙公网安备 33010602011771号