📜  门| GATE CS 2019 |第 59 题(1)

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

GATE CS 2019 第 59 题

本题需要我们实现一个函数,该函数可以对一个给定的字符串进行分解,并返回分解后的子字符串的列表。每个子字符串中都不包含给定的字符集合中的任何字符。

具体而言,我们需要完成以下函数:

def string_parse(s: str, delimiters: List[str]) -> List[str]:

函数接受两个参数:

  • s:需要进行分解的字符串;
  • detlimeters:一个由字符串组成的列表,其中的字符串为分隔符,即该列表中的任何字符都不应该出现在返回的子字符串中。

函数的返回值为一个字符串列表,其中每个字符串都是由分割符分隔的 s 的子字符串。

以下是一个例子:

string_parse("Happy#Winter!", ["#", "!"])

函数会返回以下字符串列表:

['Happy', 'Winter']

如果分割符列表为空,则应该将整个字符串作为一个字符串返回。

要求:

  • 您的实现必须执行以下几项操作:
    • 您的实现必须尽可能快地分解字符串,并将子字符串添加到返回列表中;
    • 即使对于字符串中的小字符串数组,也必须经过至少一次迭代将字符串分解为子字符串;
    • 您不能使用任何现成的字符串分隔函数或库,例如 split() 函数等;
    • 请尽量避免使用任何 Python 内置数据结构或库函数(例如,set、map、reduce 等)。

示例:

assert string_parse("cat?dog", ["?", "!"]) == ["cat", "dog"]
assert string_parse("cat", []) == ["cat"]
assert string_parse("cat=dog", ["=", "!"]) == ["cat", "dog"]
assert string_parse("Rahul.is.a.good.boy", ["is", "a"]) == ["Rahul.", ".good.boy"]

以上就是这道题的具体内容,希望大家都能够逐步理解!