用C++编程输出每个字符串的子串个数
时间: 2024-03-09 10:45:31 浏览: 97
以下是一个用 C++ 编程输出每个字符串的子串个数的示例代码:
```c++
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int countSubstrings(string s) {
unordered_set<string> subs;
for (int i = 0; i < s.size(); i++) {
for (int j = 1; j <= s.size() - i; j++) {
string sub = s.substr(i, j);
subs.insert(sub);
}
}
return subs.size();
}
int main() {
string s1 = "hello";
string s2 = "world";
cout << s1 << " has " << countSubstrings(s1) << " substrings." << endl;
cout << s2 << " has " << countSubstrings(s2) << " substrings." << endl;
return 0;
}
```
该程序首先定义了一个 `countSubstrings` 函数,该函数接受一个字符串参数,并返回该字符串的子串数量。在函数内部,我们使用嵌套循环来遍历字符串中的所有子串,并将它们添加到一个无序集合中。由于无序集合只包含唯一元素,因此最后我们返回集合的大小作为子串数量。
在 `main` 函数中,我们定义了两个字符串 `s1` 和 `s2`,并分别计算它们的子串数量。最后,我们将结果输出到控制台。
注意,该程序只计算了字符串中不同的子串数量,而不是每个子串在字符串中出现的次数。如果您需要计算每个子串出现的次数,可以使用另一个数据结构来保存每个子串的计数。
阅读全文