【华为机试】2023年真题B卷(python)-快速人名查找

一、题目

题目描述:

给一个字符串,表示用’, \’分开的人名。然后给定一个字符串,进行快速人名查找,符合要求的输出。
快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词。

二、输入输出

输入描述:
第一行是人名,用’, \’分开的人名 第二行是 查找字符串 
输出描述:

输出满足要求的人名

三、示例

示例1:
输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
zhang san,zhang san san
zs
输出:
zhang san
示例2:

输入输出示例仅供调试,后台判题数据一般不包含示例
输入
zhang san san,zhang an sa,zhang hang,zhang seng,zhang sen a
zhas
输出
zhang an sa,zhang seng

四、要求

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K

五、解题思路

使用正则表达式进行匹配

六、参考代码 

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-快速人名查找.py
@Time    :   2024/01/01 00:23:18
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''import re
from itertools import combinationsclass TreeNode:def __init__(self, val=0, left=None, right=None):self.val = valself.left = leftself.right = rightclass UnionFind:def __init__(self, n=0):self.count = nself.item = [i for i in range(n+1)]def find(self, x):if x != self.item[x]:self.item[x] = self.find(self.item[x])return self.item[x]def union(self, x, y):x_root = self.find(x)y_root = self.find(y)if x_root != y_root:self.item[y_root] = x_rootself.count -= 1def find_matching_names(names, query):result = []for name in names:pattern = ".*".join([i[0] for i in name.split(" ")])insert_add_list = list(combinations([i for i in range(1, len(query))], len(name.split(" ")) - 1))for i in insert_add_list:formatted_query = querycz = 0for j in sorted(i):formatted_query = formatted_query[:j+cz] + ".*" + formatted_query[j+cz:]cz += 2formatted_query += ".*"if re.match("^" + pattern + ".*$", query) and re.match(formatted_query, name):result.append(name)breakreturn result# 读取输入的人名列表和查找字符串
names = input().split(",")
query = input()# 输出满足要求的人名列表
matching_names = find_matching_names(names, query)# 输出结果
print(",".join(matching_names))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316964.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32MP157/linux驱动学习记录

1. uboot烧录 2.linux安装nfs服务 sudo apt-get install nfs-kernel-server rpcbind安装nfs服务 在用户根目录下创建一个名为“linux”的文件夹,以后所有的东西都放到这个“linux”文件夹里面,在“linux”文件夹里面新建一个名为“nfs”的文件夹&#…

企业使用人工智能情况调查

企业使用人工智能情况调查 人工智能在商业中的应用并不是什么新鲜事。多年来,公司一直在使用人工智能技术来削减成本并提高效率。 但最近生成式人工智能市场的激增帮助人工智能成为主流商业技术。具体来说,ChatGPT 和 Midjourney 等大型语言模型 (LLM)…

2020年认证杯SPSSPRO杯数学建模C题(第一阶段)抗击疫情,我们能做什么全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 C题 抗击疫情,我们能做什么 原题再现: 2020 年 3 月 12 日,世界卫生组织(WHO)宣布,席卷全球的冠状病毒引发的病毒性肺炎(COVID-19)是一种大流行病。…

团结引擎正式发布,已开放下载

2024年1月1日,Unity 正式发布了针对中国开发者的引擎--团结引擎创世版,现在已经可以开放下载,想体验的小伙伴们可以到官网下载了。 团结引擎是专为中国开发者定制的实时3D引擎,目前是基于Unity 2022LTS版本开发的。团结引擎内置了…

一篇关于大模型在信息抽取(实体识别、关系抽取、事件抽取)的研究进展综述

信息提取(IE)旨在从普通自然语言文本中提取结构化知识(如实体、关系和事件)。最近,生成式大型语言模型(LLMs)展现了在文本理解和生成方面的卓越能力,使得它们能够广泛应用于各种领域…

【竞技宝】LOL:S14新赛季改动 将trueskill2隐藏分算法

北京时间2024年1月3日,随着英雄联盟德玛西亚杯的进行,英雄联盟赛事已经进入新赛季的征途。每个赛季的春季赛之前,都会进行一次大的版本更新。据爆料,今年的S14版本大更新中,除了游戏内的英雄、道具、地图的更新之外,排位的隐藏分算法也将进行重大改变。 昨日,英雄联盟设计总监…

【Java进阶篇】字符串常量、字符串常量池详解

字符串常量、字符串常量池详解 ✔️字符串常量池是如何实现的?✔️字符串常量从哪来的? ✔️字符串常量是什么时候进入到字符串常量池的? ✔️字符串常量池是如何实现的? 字符串常量池 (String Constant Pool) 是Java中一块特殊的内存区域,用于存储字符串常量。…

KBDSL1.DLL文件丢失,软件或游戏无法启动,快速修复方法

在Windows操作系统中,KBDSL1.DLL是一个动态链接库文件,由Microsoft Corporation提供。通常包含多个函数和程序,可以被多个应用程序共享,以执行一些特定的任务或功能。 如果KBDSL1.DLL文件丢失或损坏,可能会在启动计算机…

代码随想录算法训练DAY18|二叉树5

算法训练DAY18|二叉树5 513.找树左下角的值 力扣题目链接 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 本题要找出树的最后一行的最左边的值。此时大家应该想起用层序遍历是非常简单的了,反而用递归的话会比较难一点。 我…

Windows—常用DOS命令

解释:DOS命令即面向磁盘的操作命令 进入DOS页面:快捷键“winR”,输入cmd help命令 help 【命令名】可查看其他命令的解释,直接输入help也可以查看部分命令 另外,如果输入help显示help不是内部或外部命令,…

微信小程序封装vant 下拉框select 多选组件

老规矩先上效果图&#xff1a; 本组件主要由小程序vant ui组件&#xff0c;vant 小程序ui网址&#xff1a;vant-weapp 主要代码如下: 先封装子组件&#xff1a; select-checkbox 放在 components 文件夹里面 select-checkbox.wxml: <view><van-field label"{…