给你若干个字符串,请编程输出每个字符串的子串个数。 输入 若干个字符串,每个字符串占一行,字符串中不含空格,长度最大为1000。 输出 对应每一行的字符串,输出该字符串子串的个数。 请使用c++语言。样例输入 复制 abc apple software 样例输出 复制 7 16 37
时间: 2024-03-21 22:40:11 浏览: 64
两个字符串中最大相同的子串。 "qwerabcdtyuiop" "xcabcdvbn"
可以使用暴力枚举的方式来计算每个字符串的子串个数。具体地,对于每个字符串,枚举其所有可能的子串,然后统计子串的个数即可。时间复杂度为 O(n^3),其中 n 为字符串的长度。
以下是一个参考实现:
```c++
#include <iostream>
#include <string>
using namespace std;
int count_substrings(string s) {
int n = s.size(), cnt = 0;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
cnt++;
}
}
return cnt;
}
int main() {
string s;
while (cin >> s) {
cout << count_substrings(s) << endl;
}
return 0;
}
```
这个实现中,`count_substrings` 函数用来计算一个字符串的子串个数。它通过双重循环枚举所有可能的子串,然后累加个数。在 `main` 函数中,我们可以反复读入输入,对于每个字符串,调用 `count_substrings` 函数并输出结果。
阅读全文