计算C ++中字符串中不同子字符串的数量

根据问题,给我们一个字符串str,我们必须计算给定字符串中的所有子字符串。子字符串是一个字符串,它是现有字符串的一部分,其大小可能小于或等于现有字符串。

让我们借助示例来了解问题及其解决方案。

输入-str =“ wxyz”;

输出-不同子字符串的计数为:10

说明-计数的不同子字符串为-

wxyz, wxy, wx, w, xyz, xy, x, yz, y, z so their count is 10

输入− str =“ zzzz”

输出-不同子字符串的计数为:4

说明-计数的不同子字符串为-

zzzz, zzz, zz, z

在以下程序中使用的方法如下

  • 以字符串str作为输入。

  • 声明一个空的unordered_set“ myset”。

  • 从0开始循环i,直到第一步小于字符串的大小为止。

    • 声明一个新的字符串空间“”(空)。

    • 从i开始的循环j每次移动1步,直到j小于字符串的大小。

    • 用str [j]连接每一步的空间值

    • 在myset中插入空格。

  • 打印str的大小作为答案。

示例

#include<iostream>
#include<unordered_set>
using namespace std;
int main(){
   string str = "aaaa";
   unordered_set<string> myset;
   int i, j;
   for (i = 0; i < str.size(); ++i){
      string space = "";
      for (j = i; j < str.size(); ++j){
         space = space + str[j];
         myset.insert(space);
       }
   }
   cout <<"count of distinct substring is: " <<str.size();
   return 0;
}

输出结果

如果运行上面的代码,我们将获得以下输出-

count of distinct substring is: 4