使用 C++ 查找一个字符串的子字符串在另一个字符串中出现的次数


在本文中,我们给定两个字符串,我们需要找出第一个字符串有多少个子字符串可以在第二个字符串中找到(相同的子字符串可以出现多次)。例如

Input : string1 = “fogl”
   string2 = “google”
Output : 6
Explanation : substrings of string1 present in string2 are [ “o”, “g”, “l”, “og”, “gl”,
“ogl” ].

Input : string1 = “ajva”
   string2 = “java”
Output : 5
Explanation : substrings of string1 present in string2 are [ “a”, “j”, “v”, “a”, “va” ].

寻找解决方案的方法

让我们讨论一下如何解决这个问题,即在一个字符串中找到多个子字符串;通过查看示例,我们了解到首先,我们必须查看字符串 1 的所有子字符串,然后检查每个子字符串是否出现在另一个字符串中,如果存在,则递增计数器,并在操作整个字符串后检查计数器中存储的结果。

上述方法的 C++ 代码

这是我们可以用作输入来解决给定问题的 C++ 语法 -

示例

#include<iostream>
#include<string>
using namespace std;

int main() {
   string str1 = "ajva";
   string str2 = "java";
   int count = 0;// counter to store result
   int n = str1.length();

   for (int i = 0; i < n; i++) {

      string str3; // string3 is initialised to store all substrings of string1
      for (int j = i; j < n; j++) {
         str3 += str1[j];

         // checking whether substring present in another string or not
         if (str2.find(str3) != string::npos)
            count++;
      }
   }
   cout << "Number of substrings of one string present in other : "<< count;
   return 0;
}

输出

Number of substrings of one string present in other : 5

理解代码

首先,在此代码中,我们为两个字符串赋予值并将计数器初始化为 0。我们遍历整个字符串并找到 str1 所有可能的子字符串并将它们存储在 str3 中。然后我们检查 str1 的每个子字符串是否出现在 str2 中;如果是,则将计数器加 1,最后我们打印存储在计数器变量中的输出。

结论

本文找到了查找一个字符串在另一个字符串中出现的子字符串数量的简单解决方案。我们可以在其他语言(如 C、Java、Python 和其他语言)中编写相同的程序。我们希望您觉得本文有所帮助。

更新于: 2021 年 11 月 25 日

357 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告