递归函数在C++中进行子串搜索

递归函数在c++中进行子串搜索

给定两个字符串 Str 和 subStr 作为输入。目标是确定 subStr 中存在的文本是否作为子字符串存在于 Str 中。如果整个 X 在 Y 中至少出现一次,则字符串 X 称为 Y 的子串。我们将使用递归方法来执行此操作。

例如

输入− Str = “tutorialspoint” subStr=”Point”

输出− 给定字符串不包含子字符串!

解释− 字符串 Point 不是教程点的子字符串

输入− Str = “globalization” subStr=”global”

输出− 给定字符串包含子字符串!

立即学习“C++免费学习笔记(深入)”;

解释 – 字符串global是全球化的子字符串

下面的程序中使用的方法如下

在这种方法中,我们以递归方式检查subStr是否是Str的子字符串。递归的步骤为:-

1.将两个字符串传递给递归函数,其中指针将指向两个字符串的当前字符位置

如果字符串结束但模式还剩下更多字符,则返回 0,因为未找到模式我们到达了字符串的末尾。

如果当前字符是模式中的最后一个字符,则在字符串中找到它,返回 1。

li>

如果两个当前字符相同,则将两个指针移动到下一个位置。

如果两个当前字符不匹配,则将指针移动到下一个位置。将字符串移动到下一个位置。

将输入字符串作为字符数组 Str 和 subStr。

函数 match(char *str1, char *substr1) 接受两个子字符串,如果 substr1 和 str1 相同,则返回 1。

两个指针都指向字符串中存在的字符,最初位于起始位置。

如果 substr 为空,则返回 0。

如果两个字符串都为空,则也返回 0。

如果两个字符串都为空,则也返回 0。 >

如果两个当前字符相等,则使用 match(str1 + 1, substr1 + 1) 递归检查下一个字符

函数 checksubString (char *str2, char *substr2) 接受两个字符串,如果 str2 中存在 substr2,则返回 1。

如果 str2 和 substr2 指向的当前字符相同,则检查是否连续的字符也可以使用 match() 函数进行匹配。如果返回 1,则返回 1。

如果到达 str2 的末尾,则返回 0。

否则递归检查str2 的下一个字符使用 checksubString(str2 + 1, substr2);

如果所有条件都失败,则还使用递归检查checksubString(str2 + 1, substr2);

根据返回值打印结果。

示例

#includeusing namespace std;int match(char *str1, char *substr1){   if (*substr1 == ''){      return 1;   }   if (*str1 == ''){      if(*substr1 != ''){         return 0;      }   }   if (*str1 == *substr1){      return match(str1 + 1, substr1 + 1);   }   return 0;}int checksubString(char *str2, char *substr2){   if (*str2 == *substr2){      if(match(str2, substr2)){         return 1;      }   }   if (*str2 == ''){      return 0;   }   else{      return checksubString(str2 + 1, substr2);   }   return checksubString(str2 + 1, substr2);}int main(){   char Str[]="tutorialspoint";   char subStr[]="point";   if(checksubString(Str,subStr)==1){      cout << "Given string contains substring!";   }   else{      cout << "Given string does not contain substring!"; }   return 0;}

输出

如果我们运行上面的代码,它将生成以下输出

Given string contains substring!

以上就是递归函数在C++中进行子串搜索的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 21:05:05
下一篇 2025年12月15日 23:18:45

相关推荐

  • 递归程序打印所有小于N的仅由数字1或3组成的数字

    We are given an integer variable as N storing the positive integer type value. The task is to recursively print all the numbers less than given value …

    2025年12月17日
    000
  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 在C语言中,字符串搜索函数是什么?

    该库还提供了几个字符串搜索函数,如下 – char *strchr (const char *string, intc); 查找字符串中第一次出现的字符 c。 char “strrchr (const char “string, intc); 查找字符串中最后一次…

    2025年12月17日
    000
  • C函数的参数和返回值

    在这里,我们将看到基于返回值和参数的C函数的不同类型。 因此,一个函数可以带有一些参数,或者不带任何参数。同样地,一个函数可以返回一些东西,否则不返回任何东西。因此,我们可以将它们分为四种类型。 没有参数和没有返回类型的函数。没有参数但返回某些东西的函数。带有参数但不返回任何东西的函数。既带有参数又…

    2025年12月17日
    000
  • 解决C++编译错误:’redefinition of ‘function”,如何解决?

    解决C++编译错误:’redefinition of ‘function”,如何解决? C++作为一种强大的编程语言,常常在软件开发中被广泛应用。然而,对于初学者来说,编写无错误的C++程序并不容易。其中一种常见的错误是“redefinition of &#821…

    2025年12月17日
    000
  • 二分搜索(递归和迭代)在C程序中的实现

    二分搜索是一种用于在排序数组中查找元素(目标值)位置的搜索算法。在应用二分搜索之前,数组应该被排序。 二分搜索也被称为对数搜索、二分查找、半区间搜索。 工作原理 二分搜索算法通过将要搜索的元素与数组的中间元素进行比较,并根据此比较结果执行所需的过程。 情况1 – 元素 = 中间值,找到元…

    2025年12月17日
    000
  • 解决C++代码中出现的“error: ‘function’ does not have a return type”问题

    解决C++代码中出现的“error: ‘function’ does not have a return type”问题 在使用C++编写代码时,经常会遇到各种类型的错误。其中一个常见的错误就是“error: ‘function’ does not h…

    2025年12月17日
    000
  • 在不同函数中可以使用相同名字的变量吗

    可以使用。C语言在函数中说明的变量为局部变量,只在函数内起作用,不会影响到其他函数。在不同函数中使用相同的变量名不代表是同一变量。 本教程操作环境:windows7系统、c99版本、Dell G3电脑。 在不同函数中可以使用相同名字的变量。 教程推荐:《c语言教程视频》 在函数内部定义的变量(局部变…

    2025年12月17日
    000
  • C语言中字符串连接函数是什么

    C语言中字符串连接函数是:strcat()。该函数会将指定字符串追加到目的字符串的结尾,所以必须保证目的字符串有足够的内存空间来容纳两个字符串,否则会导致溢出错误。 c语言中字符串连接函数是strcat(),该函数用来将两个字符串连接(拼接)起来。 (推荐教程:C语言教程) 函数语法: char*s…

    2025年12月17日
    000
  • C语言中有且唯一的函数是什么函数

    c语言中有且唯一的函数是main主函数。一个完整的C程序有且仅有一个主函数(main函数),主函数可以调用其它各种函数,但其它函数不能调用主函数,C程序从主函数开始执行,并在主函数中结束整个程序的运行。 c语言中有且唯一的函数是main主函数。 (推荐学习:C语言教程) 解析: 一个完整的C程序有且…

    2025年12月17日
    000
  • C语言中有且唯一的函数是什么

    C语言中有且唯一的函数是main函数,main函数称之为主函数。在C语言中,程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行。 c语言中有且唯一的函数是main函数,它是程序的入口和出口。 (推荐学习:C语言教程) 相关介绍: 在C语言中,程序总是从main…

    2025年12月17日
    000
  • c语言中文本输出的函数名称是什么?

    c语言中文本输出的函数名称是printf。printf函数的语法是“printf(“格式控制字符串”,输出列表)”;该函数功能是按照“格式控制字符串”指定的格式,输出“输出列表”中的内容,格式控制串可由格式字符串和非格式字符串两种组成。 c语言中文本输出的函数名称是print…

    2025年12月17日
    000
  • c语言中将一个字符串转换到整型数据类型的函数是什么?

    函数是:atoi(),其声明为“int atoi(char *str);”。atoi函数的功能是将字符串转为整型并返回;atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。 在C语言中将字符串转化成整型有两种方法。 int i=atoi(str); 或 sscan…

    2025年12月17日
    000
  • c语言求平方函数是什么

    c语言求平方函数是什么 在C语言中,没有专门的函数来求平方,对于变量x,其平方可以表示为x*x,即直接使用两个数(或变量)相乘即可。 推荐学习:c语言视频教程 另外C语言中,math.h文件中含有乘方(包括开方)的库函数,是pow(x,y)。 其中x和y都是双精度浮点(double)型,x是底数,y…

    2025年12月17日
    000
  • c语言允许函数的递归调用吗

    c语言允许函数的递归调用吗 允许。C语言中的函数直接或间接调用自己的过程叫递归。 一、递归的两个必要条件 1、存在限制条件,当满足这个条件时,递归便不再继续。 2、每次递归调用之后越来越接近这个限制条件。 立即学习“C语言免费学习笔记(深入)”; 推荐学习:c语言视频教程 二、经典的递归题目-求第n…

    2025年12月17日
    000
  • C语言sqrt函数的用法

    c语言sqrt函数的用法 sqrt函数用于计算一个非负实数的平方根。 sqrt的函数原型: 在VC6.0中的math.h头文件的函数原型为double sqrt(double); 说明:sqrt即Square Root Calculations(平方根计算),通过这种运算可以考验CPU的浮点能力。 …

    2025年12月17日
    000
  • c语言定义函数

    函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明,根据这一点可以将函数分为有参函数和无参函数。 将代码段封装成函数的过程叫做函数定义。 函数的定义包含一个函数头(function head,…

    2025年12月17日
    000
  • C# 清除事件绑定的函数

    c#  清除事件绑定的函数 #region 清除事件绑定的函数 /// /// 清除事件绑定的函数 /// /// 拥有事件的实例 /// 事件名称 public static void ClearAllEvents(object objectHasEvents, string eventName)…

    好文分享 2025年12月17日
    000
  • XPath的floor()和ceiling()函数有什么区别?

    xpath中floor()函数返回不大于参数的最大整数,ceiling()函数返回不小于参数的最小整数,即floor()向下取整、ceiling()向上取整,二者均按负无穷或正无穷方向取最接近的整数,不采用四舍五入;例如floor(3.14)为3,ceiling(3.14)为4,floor(-3.1…

    2025年12月17日
    000
  • Golang如何定义函数与方法

    Go语言中函数用func定义,可独立调用;方法则绑定类型,通过接收者关联数据。1. 函数语法:func 名(参数) 返回值 { … },如 add(a, b int) int。2. 支持多返回值,常用于结果与错误,如 divide(a, b float64) (float64, erro…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信