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 作为输入。

  • 声明一个空的无序集合 "myset"。

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

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

    • 循环 j 从 i 开始,每次移动 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

更新于: 2020-08-14

571 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.