返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中如何实现模式匹配
  • 644
分享到

C语言中如何实现模式匹配

2023-06-16 19:06:50 644人浏览 泡泡鱼
摘要

这篇文章主要介绍了C语言中如何实现模式匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中如何实现模式匹配文章都会有所收获,下面我们一起来看看吧。C语言数据结构中串的模式匹配串的模式匹配问题:朴素算法与K

这篇文章主要介绍了C语言中如何实现模式匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中如何实现模式匹配文章都会有所收获,下面我们一起来看看吧。

C语言数据结构中串的模式匹配

串的模式匹配问题:朴素算法与KMP算法

#include<stdio.h>#include<string.h>int Index(char *S,char *T,int pos){//返回字串T在主串S中第pos个字符之后的位置。若不存在,则函数值为0.//其中,T非空,1<=pos<=StrLength(s).int i=pos;int j=1;while(i<=S[0]&&j<=T[0]){    if(S[i]==T[j]){++i;++j;}    else{i=i-j+2;j=1;}}if(j>T[0]) return i-T[0];else return 0;}int get_next(char *T,int next[]){//求模式串T的next函数值并存入数组next。int i=1;next[1]=0;int j=0;while(i<T[0]){    if (j==0||T[i]==T[j]){++i;++j;next[i]=j;}else j=next[j];}return *next;}int Index_KMP(char *S,char *T,int pos){//利用模式串T的next函数求T在主串S中第pos个字符之后的位置的KMP算法,其中T非空,1<=pos<=StrLength(S).int next[100];*next=get_next(T,next);int j=1,i=pos;while(i<=S[0]&&j<=T[0]){    if(j==0||S[i]==T[j]){++i;++j;}    else j=next[j];}if(j>T[0]) return i-T[0];else return 0;}void main(){int id,j,k,i,a;printf("输入主串、子串和匹配起始位置\n");char A[20];char B[10];printf("请输入主字串内容\n");    gets(A+1);    *A=strlen(A+1);printf("请输入子字串内容\n");    gets(B+1);    *B=strlen(B+1);printf("请输匹配起始位置\n");    scanf("%d",&j);//printf("%d ",k);    do{       printf("\n请输入您需要的任务的序号");       printf("\n1:朴素的模式匹配算法");       printf("\n2:快速模式匹配算法");       printf("\n3:退出\n");       scanf("%d",&id);    switch(id){       case 1:           {printf("\n\n你调用了功能1:");           printf("\n朴素的模式匹配算法");           k=Index(A,B,j);           printf("\n该位置为:");           printf("%d\n",k);           break;}            case 2:           {printf("\n\n你调用了功能2:");              printf("\n 快速模式匹配算法");              a=Index_KMP(A,B,j);              printf("\n该位置为:");              printf("%d\n",a);              break;}       case 3:           {printf("\n\n你调用了功能3:");              printf("\n退出\n");              }    }       }while(id!=3);
#include<stdio.h>#include<string.h>int Index(char *S,char *T,int pos){//返回字串T在主串S中第pos个字符之后的位置。若不存在,则函数值为0.//其中,T非空,1<=pos<=StrLength(s).int i=pos;int j=1;while(i<=S[0]&&j<=T[0]){    if(S[i]==T[j]){++i;++j;}    else{i=i-j+2;j=1;}}if(j>T[0]) return i-T[0];else return 0;}int get_next(char *T,int next[]){//求模式串T的next函数值并存入数组next。int i=1;next[1]=0;int j=0;while(i<T[0]){    if (j==0||T[i]==T[j]){++i;++j;next[i]=j;}else j=next[j];}return *next;}int Index_KMP(char *S,char *T,int pos){//利用模式串T的next函数求T在主串S中第pos个字符之后的位置的KMP算法,其中T非空,1<=pos<=StrLength(S).int next[100];*next=get_next(T,next);int j=1,i=pos;while(i<=S[0]&&j<=T[0]){    if(j==0||S[i]==T[j]){++i;++j;}    else j=next[j];}if(j>T[0]) return i-T[0];else return 0;}void main(){int id,j,k,i,a;printf("输入主串、子串和匹配起始位置\n");char A[20];char B[10];printf("请输入主字串内容\n");    gets(A+1);    *A=strlen(A+1);printf("请输入子字串内容\n");    gets(B+1);    *B=strlen(B+1);printf("请输匹配起始位置\n");    scanf("%d",&j);//printf("%d ",k);    do{       printf("\n请输入您需要的任务的序号");       printf("\n1:朴素的模式匹配算法");       printf("\n2:快速模式匹配算法");       printf("\n3:退出\n");       scanf("%d",&id);    switch(id){       case 1:           {printf("\n\n你调用了功能1:");           printf("\n朴素的模式匹配算法");           k=Index(A,B,j);           printf("\n该位置为:");           printf("%d\n",k);           break;}            case 2:           {printf("\n\n你调用了功能2:");              printf("\n 快速模式匹配算法");              a=Index_KMP(A,B,j);              printf("\n该位置为:");              printf("%d\n",a);              break;}       case 3:           {printf("\n\n你调用了功能3:");              printf("\n退出\n");              }    }       }while(id!=3); }

关于“C语言中如何实现模式匹配”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C语言中如何实现模式匹配”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C语言中如何实现模式匹配

本文链接: https://lsjlt.com/news/284848.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言中如何实现模式匹配
    这篇文章主要介绍了C语言中如何实现模式匹配的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中如何实现模式匹配文章都会有所收获,下面我们一起来看看吧。C语言数据结构中串的模式匹配串的模式匹配问题:朴素算法与K...
    99+
    2023-06-16
  • C语言中怎么实现朴素模式匹配算法
    这篇文章主要介绍“C语言中怎么实现朴素模式匹配算法”,在日常操作中,相信很多人在C语言中怎么实现朴素模式匹配算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言中怎么实现朴素模式匹配算法”的疑惑有所帮助!...
    99+
    2023-06-08
  • C语言中实现朴素模式匹配算法的示例分析
    这篇文章给大家分享的是有关C语言中实现朴素模式匹配算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、什么是字符串的模式匹配?字符串模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置。注意:①...
    99+
    2023-06-15
  • C语言朴素模式匹配算法实例代码
    一、什么是字符串的模式匹配? 字符串模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置。 注意: ①、子串——主串的一部分,一定存在。 ②、模式串——不一定能在主串中找到 &...
    99+
    2024-04-02
  • C#8.0中的模式匹配
    C# 8.0中的模式匹配相对C# 7.0来说有了进一步的增强,对于如下类: class Point { public int X { get; } public in...
    99+
    2024-04-02
  • C语言字符串的模式匹配之BF与KMP
    目录BF算法(Brute-Force算法)KMP算法(快速的)KMP—yxc模板总结确定一个子串(模式串)在主串中第一次出现的位置。 BF算法(Brute-Force算法) BF算法...
    99+
    2024-04-02
  • C#模式匹配有哪些及怎么实现
    这篇文章主要介绍“C#模式匹配有哪些及怎么实现”,在日常操作中,相信很多人在C#模式匹配有哪些及怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#模式匹配有哪些及怎么实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • PHP中使用Redis实现模式匹配
    在 web 开发中,Redis 已经成为了非常流行的缓存和数据库,而 PHP 也是广泛使用的 web 开发语言。结合这两者,我们可以在 PHP 中使用 Redis 来实现模式匹配的功能,极大地提高了网站的性能和用户体验。Redis 是一款基...
    99+
    2023-05-15
    PHP redis 模式匹配
  • Beam中的模式匹配怎么实现
    在Beam中,模式匹配可以通过使用Match和Case来实现。Match用于指定要匹配的值,Case用于定义匹配的模式和对应的处理逻...
    99+
    2024-04-02
  • C#如何实现择一匹配
    这篇文章主要介绍“C#如何实现择一匹配”,在日常操作中,相信很多人在C#如何实现择一匹配问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何实现择一匹配”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!C#...
    99+
    2023-06-17
  • js如何实现模糊匹配功能
    这篇文章主要介绍了js如何实现模糊匹配功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。功能描述:在搜索框中输入某一个字段,可以查询到相关的...
    99+
    2024-04-02
  • OpenCV-Python如何实现多模板匹配
    小编给大家分享一下OpenCV-Python如何实现多模板匹配,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!多模板匹配在上一篇的实战中,我们通过人物眼睛的子图,找...
    99+
    2023-06-15
  • opencv C++模板匹配的简单实现
    目录一简单实现二函数及原理讲解1matchTemplate()参数详解2minMaxLoc()函数一 简单实现 #include <opencv2/opencv.hpp>...
    99+
    2024-04-02
  • opencv C++模板匹配的实现方法
    这篇文章主要介绍“opencv C++模板匹配的实现方法”,在日常操作中,相信很多人在opencv C++模板匹配的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”opencv&nb...
    99+
    2023-06-29
  • 如何在Go语言中实现路由的动态路由匹配
    Go语言是一门快速、高效、安全、并发的编程语言,被越来越多的开发者广泛应用于Web开发中。在Web应用程序中,路由是非常重要的一环,它的作用是将请求分发到不同的处理器函数中。在此基础上,动态路由匹配更是一种灵活、高效的路由实现方式。本文将介...
    99+
    2023-12-17
    Go语言 路由 动态匹配
  • 怎么用C语言实现POOO模式
    这篇文章主要介绍了怎么用C语言实现POOO模式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用C语言实现POOO模式文章都会有所收获,下面我们一起来看看吧。MyNotes工...
    99+
    2024-04-02
  • C#适配器模式与装饰器模式如何实现
    本篇内容介绍了“C#适配器模式与装饰器模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!结构型设计模式创建型设计模式主要是为了解决创...
    99+
    2023-06-30
  • Python实现字符串模糊匹配方式
    目录Python字符串模糊匹配包含四个参数python-re模块,模糊匹配Python字符串模糊匹配 Python的difflib库中get_close_matches方法 包含四个...
    99+
    2024-04-02
  • C语言如何实现多项式相加
    这篇文章主要介绍“C语言如何实现多项式相加”,在日常操作中,相信很多人在C语言如何实现多项式相加问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言如何实现多项式相加”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-17
  • C++实现LeetCode(10.正则表达式匹配)
    [LeetCode] 10. Regular Expression Matching 正则表达式匹配 Given an input string (s) and a pattern ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作