📜  门| GATE MOCK 2017 |第37章(1)

📅  最后修改于: 2023-12-03 15:42:14.580000             🧑  作者: Mango

门 | GATE MOCK 2017 | 第37章

简介

GATE (Graduate Aptitude Test in Engineering) 是印度国家考试中心 (National Coordination Board - GATE) 主办的全国性研究生入学考试,考核工程科学和技术、人文科学和其他领域的学术知识和技能等方面的能力。GATE MOCK 2017 是一项模拟考试,完全按照 GATE 2017 的格式和难度程度设计。

这里提供了 GATE MOCK 2017 的第37章考题,主要是针对程序员的知识点和能力要求。希望程序员们能通过认真阅读和尝试本题,不仅能够提高自己的编程技能,同时也能够为 GATE 2017 的应对和相关职业生涯打下坚实的基础。

题目描述

请编写一个 Python 函数,该函数接收两个参数:一个字符串列表(str_list)和另一个字符串(pattern)。函数目标是扫描 str_list 中的每个字符串,并返回一个新的字符串列表。新的字符串列表中的每个字符串都是 str_list 中与 pattern 匹配的字符串。确定使用正则表达式,找到 pattern 与 str_list 相匹配的 any 子串。

函数格式
def find_matching_strings(str_list: List[str], pattern: str) -> List[str]:
    pass
输入
  • str_list: 一个字符串列表,其中任何字符串的长度最长为 10^4 个字符,str_list 的长度最大为 10^4。
  • pattern: 一个字符串,其中任何字符串的长度最长为 10^4 个字符。
输出
  • 匹配的点串列表。新的字符串列表中的每个字符串都是 str_list 中与 pattern 匹配的字符串。
例子

输入

find_matching_strings(['abc', 'aabc', 'abbc', 'abcc', 'aabd', 'abcd'], 'a*b*c*d')

输出

['abc', 'aabc', 'abbc', 'abcd']
解题思路

使用正则表达式,对 pattern 进行编译,编译结果保存到 re 模块中。接着使用编译后的 pattern,匹配 str_list 中的每个字符串,将匹配成功的字符串添加到新列表中。

参考代码
import re
from typing import List


def find_matching_strings(str_list: List[str], pattern: str) -> List[str]:
    reg = re.compile(pattern)
    result = []
    for s in str_list:
        if re.match(reg, s):
            result.append(s)
    return result

返回的代码片段按markdown标明。