Advertisement

华为OD机试C卷-攀登者1(Java & JS & Python & C)解析及代码免费查看.md

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:MD


简介:
本文档提供了华为OD机试C卷“攀登者1”的全面解析与解答,涵盖Java、JS、Python和C四种编程语言的题目详解及完整代码,便于免费查阅学习。 私信博主获取三天体验卡,可以免费查看所有华为OD真题、考试报告、手撕代码和面试记录。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • ODC-1Java & JS & Python & C.md
    优质
    本文档提供了华为OD机试C卷“攀登者1”的全面解析与解答,涵盖Java、JS、Python和C四种编程语言的题目详解及完整代码,便于免费查阅学习。 私信博主获取三天体验卡,可以免费查看所有华为OD真题、考试报告、手撕代码和面试记录。
  • 题库】OD2(JavaJSPythonCC++).html
    优质
    本资源提供华为OD机试的免费练习题库,涵盖Java、JavaScript、Python、C和C++等主要编程语言,助力程序员顺利通过面试。 【免费题库】华为OD机试 - 攀登者2(Java & JS & Python & C & C++)
  • ODC- 人名快速找(Java & JS & Python).md-私信获取全套OD
    优质
    本文档包含华为外包员工招聘考试中的人名快速查找题目解决方案,提供Java、JavaScript和Python三种编程语言的实现代码与详细解析。欢迎私信联系以获取整套试题资源。 ### 华为OD机试C卷 - 快速人名查找 #### 题目背景与概述 在软件开发和算法设计领域,高效地处理文本数据是一项重要技能。本题目来源于华为OD机试C卷,考察了快速人名查找的能力。题目要求在一组人名中查找能够通过每个单词的连续前缀组成给定字符串的人名。 #### 题目描述 给定一个字符串,其中包含了由逗号`,`分隔的多个不同的名字。再给定一个字符串,要求实现快速人名查找功能,找出那些名字中的每个单词的连续前几位能够组成给定字符串的名字。需要注意的是,每个名字中的所有单词都必须被用到至少一次。 #### 输入描述 - 第一行输入包含多个用逗号`,`分隔的名字。 - 第二行输入一个用于查找的字符串。 #### 输出描述 输出所有符合条件的名字。 #### 题目解析 本题目主要涉及字符串处理和数据结构的应用。核心任务是在多个名字中找到能够通过其每个单词的连续前缀组成给定字符串的名字。这里的关键在于理解“连续前缀”的概念,即每个单词的前几位字符必须连续出现,并且这些字符加起来必须能够形成给定的字符串。 #### 解决方案分析 为了实现这一功能,我们需要设计一种方法来检查每一个名字是否满足条件。具体步骤如下: 1. **读取输入**:从标准输入读取两行数据。第一行是包含多个名字的字符串,第二行是用于查找的字符串。 2. **拆分名字**:将第一行的名字按照逗号`,`拆分成单个名字。 3. **遍历名字**:对于每个名字,将其再次按照空格` `拆分成单词。 4. **构建需求字符表**:创建一个哈希表,记录查找字符串中每个字符出现的次数。 5. **检查单词**:对于名字中的每个单词,检查其前缀是否能够形成查找字符串中的一部分。这一步骤需要一个内部函数来完成。 6. **输出结果**:如果所有的单词都被成功用来组成查找字符串,则输出这个名字。 #### 实现代码示例 下面是针对此问题的三种不同编程语言的实现代码示例: ##### Java实现 ```java import java.util.*; public class NameSearch { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String names = scanner.nextLine(); String query = scanner.nextLine(); String[] nameArray = names.split(,); for (String name : nameArray) { if (canFormQuery(name, query)) { System.out.println(name); } } } private static boolean canFormQuery(String name, String query) { String[] words = name.split( ); Map requiredChars = new HashMap<>(); for (char c : query.toCharArray()) { requiredChars.put(c, requiredChars.getOrDefault(c, 0) + 1); } for (String word : words) { Map wordChars = new HashMap<>(); for (int i = 0; i < Math.min(word.length(), query.length()); i++) { char c = word.charAt(i); if (requiredChars.containsKey(c)) { wordChars.put(c, wordChars.getOrDefault(c, 0) + 1); if (wordChars.get(c).equals(requiredChars.get(c))) { requiredChars.remove(c); if (requiredChars.isEmpty()) { return true; } } } else { break; } } } return false; } } ``` ##### Python实现 ```python def can_form_query(name, query): words = name.split( ) required_chars = {c: query.count(c) for c in query} for word in words: word_chars = {} for i in range(min(len(word), len(query))): c = word[i] if c in required_chars: word_chars[c] = word_chars.get(c, 0) + 1 if word_chars[c] == required_chars[c]: del required_chars[c] if not required_chars: return True else: break return False names = input().strip() query = input().strip() name_list = names.split(,) for name in name_list: if can_form_query(name, query): print(name) ``` ##### JavaScript实现 ```javascript function canFormQuery(name, query) { const words = name.split( ); const requiredChars = [...query].reduce((acc, c) => ({ ...acc, [c]: (acc[c] || 0) + 1 }), {}); for (const word of words) { const wordChars = {}; for (let i = 0; i < Math.min(word.length, query.length); i++) { const c = word[i]; if (requiredChars[c]) { wordChars[c] = (wordChars[c] || 0) + 1; if (wordChars[c] === requiredChars[c]) { delete required
  • 题库】OD跳马(JavaJSPythonCC++).html
    优质
    本资源提供华为OD机试备考所需的免费题库,涵盖Java、JavaScript、Python、C和C++等编程语言,助你高效复习,顺利通过考核。 【免费题库】华为OD机试 - 跳马(Java & JS & Python & C & C++)
  • 题库】OD-五键键盘(Java&JS&Python&C&C++).html
    优质
    本资料提供华为OD机试中的“五键键盘”题目解答,涵盖Java、JavaScript、Python、C及C++五大编程语言,助力技术人才免费备战面试。 【免费题库】华为OD机试 - 5键键盘,提供Java、JS、Python、C和C++等多种语言解法,可免费下载。
  • ODC、D - 德州扑克(Java & JS & Python & C & C++).html
    优质
    本文件包含华为公司外包员工(OD)招聘考试中有关德州扑克游戏编程题目的C、D两卷,涵盖Java、JS、Python、C及C++五种编程语言。 私信博主可以免费获取真题解析以及代码。
  • 题库】OD之分配土地(支持JavaJSPythonCC++).html
    优质
    本页面提供华为OD机试题目“分配土地”的解题思路与代码实现,涵盖Java、JavaScript、Python、C和C++五种编程语言,助力技术面试准备。 【免费题库】华为OD机试 - 分配土地提供了多种编程语言的解法,包括Java、JavaScript、Python、C以及C++,可以免费下载使用。
  • 题库】OD之围棋的气(支持JavaJSPythonCC++).html
    优质
    本页面提供华为OD开放岗位机试题目的解答资源,题目涉及围棋规则中的“气”,支持多种编程语言解决方案,包括Java、JavaScript、Python、C和C++。 【免费题库】华为OD机试 - 围棋的气(Java & JS & Python & C & C++)提供多种编程语言解法,可免费下载。
  • OD题:跳马(Java & JS & Python & C & C++).html
    优质
    本文件提供了华为外包员工发展测试中关于“跳马”问题的多种编程语言版本解答,包括Java、JavaScript、Python、C和C++代码示例。 华为OD机试 - 跳马题目提供了多种编程语言的解法,包括Java、JavaScript、Python、C和C++,并且这些内容可以免费下载。
  • ODD-找座位-.html
    优质
    本HTML文档提供华为OD机试D卷中的“找座位”题目解答及源代码,涵盖题目的详细解析和实现思路,帮助开发者深入理解解题技巧。 私信博主可以免费获取真题解析及代码。