【华为OD考试真题】快速人名查找【Python版】

本文介绍了一道华为OD考试中的快速人名查找问题,使用Python通过正则表达式解决。分析中提到,利用"."匹配任意长度字符串,将query分割,然后与姓名进行比较,找到匹配项。提供的代码实现中,时间复杂度为O(n*n!),空间复杂度为O(n)。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


题目

标题:
分值: 200 ’

一、题目正文


输入
zhang san,zhang san san
zhansa
输出
zhang san
输入
zhang san,zhang san san
zhaansas
输出
“”
输入
zhang san,zhang san san
zhansas
输出
zhang san san


参考题解

一、分析

本题使用正则表达式相对简单点,中心思想就是:使用正则表达式中的表达式".“(作用:匹配任意长度的字母数字字符串)将匹配式query分割成和姓名字数一致的几部分,如果分割后 的表达式中的某个能和当前姓名匹配,并且姓名的首字母以”."分割后也能和query匹配,那当前姓名就是查找到的姓名中的一个

二、代码

时间复杂度:O(n*n!)
空间复杂度:O(n)

from itertools import combinations
from re import match

names = 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
华为od机试快速人名查找是指在华为OD系统中,能够快速查找到特定人名的功能。 在现实生活中,我们经常需要查找某个人的信息,比如电话号码、邮箱地址等。而在庞大的华为OD系统中,有成千上万的员工和合作伙伴,怎样快速地找到特定的人名是非常重要的。因此,华为OD机试中提出了这个问题,是为了考察面试者对于算法和数据结构的理解和应用。 要实现快速人名查找,可以使用一些常见的数据结构和算法,比如哈希表、二叉搜索树、散列表等。其中,哈希表是一种非常高效的数据结构,可以实现快速查找和插入操作。通过将人名计算为一个哈希值,并将其与一个固定大小的哈希表关联起来,就可以实现快速人名查找。 此外,还可以考虑使用二叉搜索树。通过将所有的人名按照字母顺序进行排序,并构建一颗二叉搜索树,就可以通过二分搜索的方式快速地找到特定人名。 另外,还可以使用散列表。通过将人名映射为散列值,并将其存储在散列表中,可以实现快速人名查找。在散列表中,人名与散列值之间建立一种映射关系,可以通过散列值快速定位到对应的人名。 综上所述,华为OD机试快速人名查找旨在考察面试者对于算法和数据结构的应用能力以及问题解决思路的拓展。只有能够熟练地掌握常见的数据结构和算法,并灵活运用于实际问题中,才能够在工作中高效地处理各种业务需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值