Home > Backend Development > C++ > body text

Recursive function for substring search in C++

WBOY
Release: 2023-08-31 10:29:06
forward
1112 people have browsed it

Recursive function for substring search in C++

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

例如

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

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

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

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

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

解释 - 字符串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);

  • 根据返回值打印结果。

示例

#include<iostream>
using namespace std;
int match(char *str1, char *substr1){
   if (*substr1 == &#39;\0&#39;){
      return 1;
   }
   if (*str1 == &#39;\0&#39;){
      if(*substr1 != &#39;\0&#39;){
         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 == &#39;\0&#39;){
      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;
}
Copy after login

输出

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

Given string contains substring!
Copy after login

The above is the detailed content of Recursive function for substring search in C++. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template