计算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