C++ 程序实现 Bitap 字符串匹配算法2025年1月12日 | 阅读 4 分钟 Bitap 算法,又称 Shift-Or 算法,是一种字符串搜索算法,可以高效地执行近似字符串匹配。它在模式中可能存在错误或变体时查找文本中的模式特别有用。Bitap 算法由 John Colquhoun 和 Gaston Gonnet 于 1980 年提出。 示例让我们来看看一个实现 Bitap 算法进行字符串匹配的 C++ 程序。 输出 ![]() 说明 该程序实现了 Bitap 算法进行字符串匹配。程序中存在的变量是 't',表示输入文本,'p' 是输入模式,'m' 表示模式的长度,'p_mask' 表示模式中每个字符的位掩码数组,'A' 是用于位操作的变量,'position' 表示在文本中找到模式的位置。 函数 'bitmap_search' 接受字符串 't' 和模式 'p',并返回模式在文本中的位置,如果未找到则返回 -1。该函数使用位操作在文本中搜索模式。它为模式中的字符创建位掩码,然后执行位操作以识别模式在文本中的位置。另一个名为 find pattern 的函数接受字符串 't' 作为输入文本,字符串 'p' 作为模式,并显示模式是否找到及其位置。此函数调用 bitmap_search 函数并打印结果。如果找到模式,它会显示位置,否则打印 'No Match'。 主函数接受两个字符串,分别表示用户的输入字符串和模式。之后,调用 findpattern 函数搜索模式并显示结果。 示例 2让我们来看看另一种在 C++ 中实现 Bitap 算法进行字符串匹配的方法。 输出 ![]() 说明 该程序实现了 Bitap 算法进行字符串匹配。它高效地在文本中搜索模式,提供近似字符串匹配功能。该程序有一个 Bitap 类,其中包含一个接受模式并计算其长度的构造函数。类中存在的函数是 Preprocess 函数和 Search 函数。Preprocess 函数为模式中的每个字符创建位掩码,存储在 textMasks_vector 中。Search 函数使用位操作在文本中查找模式并打印找到模式的位置。主函数从用户那里获取文本和模式的输入,并显示在文本中找到模式的位置。此主函数将使用提供的模式创建 Bitmap 类的实例或对象,要求用户输入,并调用 Bitap 类的 Search 函数来查找并打印在文本中找到模式的位置。 |
在本文中,我们将通过语法和示例讨论 C++ 中的弱指针。C++ weak_ptr 是一个标准库组件。它用于存储对由共享指针(用于最终转换)标准库指针控制的任何对象的弱引用...
阅读 6 分钟
简介:数学家和计算机科学家一直着迷于对称的序列,它们向前和向后读都相同。有效识别回文子串是计算机科学中的一个常见挑战。Manacher's Algorithm,一种由计算机科学家 Glenn Manacher 开发的开创性技术,提供了一种优雅的解决方案……
5 分钟阅读
在当今世界,计算机网络在数据传输领域扮演着重要的角色。这是每个程序员都应该了解的科目。在计算机网络中,套接字编程是编程世界中最重要的主题之一。在本主题中,我们是...
11 分钟阅读
生物信息学序列比对概述 序列比对是生物信息学中的一项基本任务,涉及 DNA、RNA 或蛋白质等生物序列的比较,以识别相似性和差异性。此过程对于理解不同物种之间的进化关系、注释基因和破译...
阅读 13 分钟
C++ 中用于结束循环的循环控制语句称为 break。一旦循环内部遇到 break 语句,循环迭代就会结束,控制立即从循环转移到循环之后的第一个语句。 break;...
7 分钟阅读
在 C++ 中,OOP 封装是指将数据和相关函数分组到单个类中。换句话说,封装定义为将代码和数据绑定(或包装)到一个单元中。它限制了对数据的直接访问,并允许进行受控的修改...
阅读9分钟
Kruskal 算法简介:在快速发展的科技和信息世界中,算法对于解决复杂问题至关重要。Kruskal 算法是一种简单且效果良好的出色算法。它源于图论,非常适合寻找连接……
11 分钟阅读
在 C++ 中编写有效可靠的代码需要仔细考虑内存管理问题。标准库提供的最有用的内存管理工具之一是 make_shared 函数。在这篇博文中,我们将探讨 make_shared 函数、它的语法以及如何...
阅读 3 分钟
在 C++ 中,矩阵是一个二维数组,由元素的行和列组成。它可以通过各种方法创建,例如使用嵌套 for 循环或动态分配内存。在 C++ 中创建矩阵的一种方法是声明一个...
阅读 4 分钟
简介:静态库是已合并为单个文件的对象文件组,可以在编译时链接到程序中。静态库中声明的所有变量和函数都包含在生成的程序中……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India