使用 C++ 查找其他字符串中存在的一个字符串的子字符串数

在这篇文章中,我们给出了两个字符串,我们需要找出第一个字符串在第二个字符串中可以找到多少个子字符串string(the exact substring can occur multiple times)。例如

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” ].

寻找解决方案的方法

让我们讨论如何解决这个问题,即找到另一个字符串中存在的多个子字符串;查看示例;我们明白,首先,我们必须看到string1的所有子串,然后我们必须检查每个子串是否存在于另一个字符串中,如果是,则增加计数器并在操作整个字符串后检查存储在计数器中的结果.

上述方法的 C++ 代码

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

示例

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

int main() {
   string str1 = "ajva";
   string str2 = "java";
   int count = 0;// 计数器存储结果
   int n = str1.length();

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

      string str3; // string3 被初始化为存储 string1 的所有子字符串
      for (int j = i; j < n; j++) {
         str3 += str1[j];

         // 检查子字符串是否存在于另一个字符串中
         if (str2.find(str3) != string::npos)
            count++;
      }
   }
   cout << "存在于 other 中的一个字符串的子字符串数: "<< count;
   return 0;
}
输出结果
存在于 other 中的一个字符串的子字符串数: 5

理解代码

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

结论

这篇文章找到了一个简单的解决方案,即找到一个字符串在另一个字符串中存在的子字符串的数量。我们可以用其他语言编写相同的程序,例如 C、java、python 和其他语言。我们希望这篇文章对您有所帮助。