21xrx.com
2024-12-22 21:21:44 Sunday
登录
文章检索 我的文章 写文章
C++实现返回两个字符串的公共子串向量(vector)
2023-07-09 19:01:50 深夜i     --     --
C++ 字符串 公共子串 向量 vector

C++是一种高效的编程语言,其在编写字符串处理程序方面拥有强大的功能。如果想找到两个字符串的公共子串,C++提供了多种方法来解决这个问题。其中一种方法是使用向量(vector)数据结构来存储公共子串。

向量是一种可以动态增长的数组,可以通过向量上的push_back()函数动态添加元素。因此,我们可以使用向量来存储两个字符串的公共子串。以下是实现此任务的步骤:

1. 定义一个名为commonSubstrings的向量,并将其初始化为空。

2. 遍历第一个字符串的所有子串,并在第二个字符串中搜索它们。如果找到一个匹配,就将该子串添加到commonSubstrings向量中。

3. 返回commonSubstrings向量。

下面是使用C++实现这个功能的代码示例:


#include <iostream>

#include <vector>

#include <string>

using namespace std;

vector<string> findCommonSubstrings(string str1, string str2){

  vector<string> commonSubstrings;

  for (int len = 1; len <= str1.length(); len++){

    for (int i = 0; i <= str1.length() - len; i++){

      string substr = str1.substr(i, len);

      if (str2.find(substr) != string::npos){

        commonSubstrings.push_back(substr);

      }

    }

  }

  return commonSubstrings;

}

int main(){

  string str1 = "hello";

  string str2 = "world";

  vector<string> commonSubstrings = findCommonSubstrings(str1, str2);

  for (int i = 0; i < commonSubstrings.size(); i++){

    cout << commonSubstrings[i] << endl;

  }

  return 0;

}

在上面的示例中,我们使用两个for循环遍历每个可能的子串,然后使用string::find()函数搜索该子串是否在另一个字符串中出现。如果出现,就将其添加到公共子串向量中,并在最后返回该向量。

总结起来,使用向量(vector)数据结构可以在C++中高效地找到两个字符串的公共子串。除了上面的实现方法外,还有其他方法也可以实现该任务,例如使用递归或动态规划算法等。使用最适合自己的方法使程序运行更高效,这也是C++编程的魅力所在。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复