大连自己的网站,免费营销型企业网站模板,电子商务网站建设的具体内容,网站开发公司业务【华为OD-E卷-寻找关键钥匙 100分#xff08;python、java、c、js、c#xff09;】
题目
小强正在参加《密室逃生》游戏#xff0c;当前关卡要求找到符合给定 密码K#xff08;升序的不重复小写字母组成#xff09; 的箱子#xff0c;并给出箱子编号#xff0c;箱子编…【华为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[]输出
1python解法
解题思路这段代码的目标是从一组字符串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解法 解题思路
更新中注意
如果发现代码有用例覆盖不到的情况欢迎反馈会在第一时间修正更新。 解题不易如对您有帮助欢迎点赞/收藏