C语言朴素模式匹配算法实例代码

以下是“C语言朴素模式匹配算法实例代码”的完整攻略。

什么是朴素模式匹配算法?

朴素模式匹配算法是一种简单的字符串匹配算法,它基于蛮力法: 遍历主串中的每个字符,每找到一个位置与模式串的第一个字符匹配,就从后续位置开始一个个比较主串和模式串中的字符是否相同,如果某个字符不匹配,则回到主串中对应的位置重新比较。

朴素模式匹配算法的实现原理

下面是C语言实现朴素模式匹配算法的程序代码执行过程:

  1. 主函数中定义两个字符数组分别为主串和模式串,并分别输入两串的值;
  2. 然后在主串中按照顺序比较每一个字符是否与模式串中的第一个字符相等;
  3. 如果匹配成功,则在主串和模式串中同步移动下一位字符,继续比较下一个字符是否相等;
  4. 如果匹配失败,则从主串中的下一个字符开始重新比较;
  5. 如果模式串的第一个字符与主串中的某个字符匹配,并且模式串与主串中的字符全部匹配成功,那么匹配就成功了。

代码实现

下面是朴素模式匹配算法的C语言实现代码示例:

#include <stdio.h>
#include <string.h>

int naive_match(char* str, char* pattern) {
    int i, j;
    int slen = strlen(str);
    int plen = strlen(pattern);
    for (i = 0; i <= slen - plen; i++) {
        for (j = 0; j < plen; j++) {
            if (str[i + j] != pattern[j]) {
                break;
            }
        }
        if (j == plen) {
            return i;
        }
    }
    return -1;
}

int main() {
    char str[] = "hello world";
    char pattern[] = "world";
    int index = naive_match(str, pattern);
    if (index == -1) {
        printf("匹配失败");
    } else {
        printf("匹配成功,匹配位置为:%d", index);
    }
    return 0;
}

代码示例说明

以上代码通过输入一个字符串和另一个需要匹配的模式串,利用朴素模式匹配算法实现了对目标字符串中特定模式的查找,找到模式串和目标字符串匹配成功后输出匹配位置,如果匹配失败则输出“匹配失败”。

以下是另外一条代码实例:

#include<stdio.h>
#include<string.h>

int naive_match(char* str, char* pattern) {
    int i, j;
    int slen = strlen(str);
    int plen = strlen(pattern);
    for (i = 0; i <= slen - plen; i++) {
        for (j = 0; j < plen; j++) {
            if (str[i + j] != pattern[j]) {
                break;
            }
        }
        if (j == plen) {
            return i;
        }
    }
    return -1;
}

int main() {

    char str[] = "who sees who";
    char pattern[] = "who";
    int index = naive_match(str, pattern);
    if (index == -1) {
        printf("匹配失败");
    } else {
        printf("匹配成功,匹配位置为:%d", index);
    }
    return 0;
}

以上代码同样通过输入一个字符串和另一个需要匹配的模式串,同样利用朴素模式匹配算法实现了对目标字符串中特定模式的查找,找到模式串和目标字符串匹配成功后输出匹配位置,如果匹配失败则输出“匹配失败”。

以上就是朴素模式匹配算法的完整攻略,希望可以对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言朴素模式匹配算法实例代码 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • c++代码各种注释示例详解

    C++代码注释详解 C++代码注释是一种为程序添加额外说明、解释和提示的方式,它有助于程序的可读性和可维护性。 本文将详细讲解C++代码各种注释示例及说明。 单行注释 单行注释以//开始,直到该行结束,可用于简单的注释或激活/屏蔽代码。 示例: int a = 5; // 定义变量a,赋值为5 // int b = 10; // 激活该行会定义变量b,赋值为…

    C 2023年5月23日
    00
  • Java中怎样使用JSON进行文件解析

    使用 JSON(JavaScript Object Notation)进行文件解析是 Java 中经常进行的操作之一。下面是一些使用 Java 解析 JSON 文件的步骤: 步骤一:导入 JSON 库 Java 中有许多 JSON 库可供选择,比如 GSON 和 Jackson。这里我们以 GSON 为例进行说明。首先需要在项目中导入 GSON 库,可以使用…

    C 2023年5月23日
    00
  • Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

    下面是详细讲解“Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例”的完整攻略,包括以下步骤: 1. 安装相关库 在使用Python操作sqlite和Excel文件之前,需要安装相应的库: sqlite3:Python内置库,用于操作sqlite数据库。 openpyxl:需要安装的Python库,用于操作Excel文件。 可以使用…

    C 2023年5月23日
    00
  • c++实现扫雷小游戏代码分享

    下面我将为大家详细讲解“c++实现扫雷小游戏代码分享”的完整攻略。 准备工作 在开始编写代码之前,我们需要先准备好一些材料。首先,需要安装c++编译器,比如Visual Studio等;其次,需要了解一些c++语言的基础知识,如函数、循环、条件语句等。 编写思路 扫雷游戏的主要思路是将一片雷区分为若干个小格子,每个格子上可能存在地雷或数字,游戏的目标是找出所…

    C 2023年5月24日
    00
  • Java自动拆箱空指针异常的解决

    Java自动拆箱空指针异常通常发生在Java中使用装箱类型与基本数据类型混合运算的过程中。在这种情况下,装箱类型将被自动展开成基本数据类型,这个过程称为自动拆箱。如果装箱类型为null,则在自动拆箱时会抛出NullPointerException。下面是解决Java自动拆箱空指针异常的攻略: 解决方案1:显式进行空值判断 因为空指针异常是由于装箱类型为nul…

    C 2023年5月22日
    00
  • office2003怎么设置R1C1样式?

    当你使用Microsoft Office 2003时,可以选择使用相对参照样式,也就是R1C1样式,而不使用A1样式。下面将为你详细讲解如何设置R1C1样式。 步骤1:进入选项设置 首先打开Microsoft Excel 2003,然后单击工具栏上的“选项”按钮。在弹出的“选项”窗口中,单击“工作表”选项卡。 步骤2:启用R1C1样式选项 在“工作表”选项卡…

    C 2023年5月23日
    00
  • Win10更新失败报错怎么办 win10更新报错“0xc0000005”解决方法

    下面是详细讲解关于”Win10更新失败报错”的攻略。 Win10更新失败报错 在Windows操作系统的更新过程中,有些用户在下载或者安装更新时会面临着更新失败的问题,即”Win10更新失败报错”问题。这些问题大多数时候由软件冲突、系统设置、应用程序的错误等等因素引起。当Windows失去不必要的间隔时间以来,某些文件可能已经损坏,或者客户机安装的软件和应用…

    C 2023年5月23日
    00
  • 全境封锁2武器有哪些 全武器介绍

    全境封锁2武器有哪些 全武器介绍 全境封锁2是一款以军事背景为主题的 RPG 游戏,其中武器种类丰富。本文将对这些武器进行全面介绍。 武器种类 全境封锁2中的武器大致可分为以下几类: 步枪 冲锋枪 狙击枪 轻机枪 战斗霰弹枪 手枪 火焰喷射器 黄金枪 不同武器介绍 步枪 步枪是一类长枪,常见的有 AK47、M16A2 等。通常适用于中远距离作战,威力较大,但…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部