在字典中按给定前缀和后缀搜索字符串2024 年 8 月 29 日 | 4 分钟阅读 在本教程中,我们将编写 Python 程序,以在字典中带有给定前缀和后缀的字符串搜索。我们给出了一个包含 N 个字符串和 Q 个查询的数组,查询格式为两个字符串 prefix 和 suffix。我们的任务是找到给定数组中带有给定前缀和后缀的任何字符串。 让我们理解以下示例 - 输入 arr = ["apple", "app", "biscuit", "mouse", "orange", "bat", "microphone", "mine"}] Queries = [{a, e}, {a, p}] 输出 apple app 说明 查询 1 字符串“apple”是给定字典中唯一带有给定前缀“a”和后缀“e”的单词。 查询 2 字符串“app”是给定字典中唯一带有给定前缀“a”和后缀“p”的单词。 让我们用朴素的方法来解决这个问题。 解决方案 - 朴素方法 输出 apple mine 解释 - 朴素方法涉及将每个字符串的前缀和后缀与相应的查询进行比较。如果前缀和后缀匹配,则打印字符串并将 found 标志设置为 True。否则,如果在查询结束时未找到匹配项,则打印“-1”。 时间复杂度 - 上述程序的时间复杂度为 O (Q*N*M),其中 M 是字符串的最大长度。 我们可以用更有效的方式来解决它。 解决方案 - 在本节中,我们将使用 Trie 数据结构来解决这个问题。它可以以以下方式同时支持前缀和后缀搜索 - 为了同时支持前缀和后缀搜索,单词“apple”可以插入 Trie 数据结构中。此外,还可以插入单词的变体以支持高效的前缀和后缀搜索。例如,可以将单词“e{apple,”、“le{apple,”、“ple{apple,”、“pple{apple,”和“apple{apple”插入 Trie 中。 Trie 中的每个单词的格式将是“suffix {word”,其中“suffix”表示从给定单词“apple”获得的所有可能的后缀。 插入特殊字符 { 是为了分隔后缀和单词。可以用任何其他特殊字符代替 {,但首选 {,因为它的 ASCII 值是 123。 以下是解决问题的步骤 - 首先,遍历给定数组中的字符串并执行以下步骤 -
让我们理解以下示例 - 示例 - 输出 apple mine 解释 - 在此代码中,我们首先定义 TrieNode 和 Trie 类来创建和使用 Trie 数据结构。insert 方法用于将单词插入 Trie,search 方法用于在 Trie 中搜索单词。 insert_suffixes_into_trie() 函数接受 Trie 和一个单词作为输入,并将该单词的所有可能后缀插入 Trie。 find_matching_word() 函数接受 Trie、前缀和后缀作为输入,以“suffix{prefix”的格式构造一个字符串 t,并在 Trie 中搜索它。 时间复杂度 - 时间复杂度为 O (N*M2 + Q*M),其中 M 是所有字符串中的最大长度。 结论总之,本文讨论了使用 Trie 数据结构有效地同时支持给定单词集的前缀和后缀搜索的概念。Trie 是一种类似树的数据结构,特别适用于处理和搜索大量字符串。 下一主题使用琐碎哈希函数进行排序 |
在本教程中,我们将讨论 Python 中 choice() 方法的用法。要在程序中使用它,我们首先需要导入 random 模块。choice() 的功能是挑选或生成一个随机元素,它可以是任何东西,一个数字或一个...
阅读 3 分钟
OpenWeatherMap 确实是一项为 Web 服务和移动应用程序的开发者提供天气信息的服务,包括当前天气信息、预报和历史数据。它提供有限的免费使用层以及具有 JSON、XML 和 HTML 端点的 API。用户可以...
阅读 3 分钟
Python 有许多其他的 GUI 框架,但只有 Tkinter 被包含在核心库中。Tkinter 具有许多优点。由于它是跨平台的,相同的代码可以在 Windows、macOS 和 Linux 上运行。由于 Tkinter 使用本机操作系统组件来...
阅读 10 分钟
在本教程中,我们将学习 Python 运算符优先级和结合性。理解 Python 运算符的机制对开发人员至关重要。读者最好在检查后理解 Python 如何评估其运算符的顺序。某些运算符优先于其他运算符;……
阅读 4 分钟
?作为最受欢迎和适应性最强的编程语言之一,Python 可用于创建各种应用程序。Python 使程序员能够为 Web 应用程序创建服务器端或后端代码。还包括了几个框架和包。考虑到这一点,我们将尝试...
阅读 3 分钟
接下来是一个抽象的理论语法,用于定义 DOT 语言的特性。终结符以醒目的文本样式显示,非终结符以斜体显示。确切的字符用单引号给出。括号(和)在需要时表示分组。方括号 [ 和 ] 包含...
阅读 6 分钟
在本教程中,我们将讨论用户如何编写Python程序来计算给定字符串对中匹配字符的数量。我们将传入一对非空字符串。程序将计算该对中匹配字符的数量...
阅读 4 分钟
有很多原因说明为什么学习 Python 对年轻人很重要,但对于孩子来说,Python 是一种非常棒的编程语言,可以开始学习编码。Python 是一种功能强大、易于阅读、高级的编程语言。这意味着就像我们阅读英语一样...
阅读 6 分钟
在 Python 中,列表包含多种数据,包括字符串和整数。所有项目都用逗号分隔;列表通过将值括在方括号中来表示。我们可以使用 Python 内置的 len() 方法来确定列表的长度。要计算列表的长度...
阅读 3 分钟
高度平衡二叉树 一种称为“高度平衡二叉树”或“平衡二叉树”的二叉树数据结构,其每个节点的左右子树高度相差至多一个单位。这是一个关键特性,可确保插入和……的效率。
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India