C++给你若干个字符串,请编程输出每个字符串的子串个数。 输入 若干个字符串,每个字符串占一行,字符串中不含空格,长度最大为1000。 输出 对应每一行的字符串,输出该字符串子串的个数。
时间: 2024-03-16 13:47:05 浏览: 16
好的,这是一个比较经典的字符串问题,我们可以使用暴力枚举的方法来解决。对于每个字符串,我们可以枚举它的所有子串,计算子串的个数并输出即可。以下是代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string s;
while (getline(cin, s)) { // 循环读入每一行字符串
int n = s.size(); // 字符串长度
int ans = 0; // 子串个数
for (int i = 0; i < n; i++) { // 枚举左端点
for (int j = i; j < n; j++) { // 枚举右端点
ans++; // 子串个数加1
}
}
cout << ans << endl; // 输出子串个数
}
return 0;
}
```
这段代码使用了 `getline` 函数循环读入每一行字符串,然后对于每个字符串,使用两层循环枚举左右端点,计算子串的个数并输出即可。需要注意的是,这里的字符串是使用 `string` 类型表示的,可以直接使用 `size` 函数获取字符串长度。
相关问题
用c++实现给你若干个字符串,请编程输出每个字符串的子串个数
好的,以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
string s;
getline(cin, s); // 读取换行符
for (int i = 0; i < n; i++) {
getline(cin, s);
int len = s.size();
int count = len * (len + 1) / 2; // 计算子串个数
cout << count << endl;
}
return 0;
}
```
首先,我们读入一个整数 `n`,表示字符串的个数。接着,我们使用 `getline` 函数读取每个字符串,并计算它的子串个数。由于一个长度为 `len` 的字符串有 `len*(len+1)/2` 个子串,所以我们可以直接计算出子串个数。最后输出结果即可。
希望这个代码能够帮助你解决问题。如果你还有其他问题,请继续提问。
给你若干个字符串,请编程输出每个字符串的子串个数。C++
好的,以下是解决该问题的C++代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int count_substrings(string s) {
int n = s.length();
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
count++;
}
}
return count;
}
int main() {
string strings[] = {"abc", "defg", "hijklmno"};
int n = sizeof(strings) / sizeof(strings[0]);
for (int i = 0; i < n; i++) {
cout << "The number of substrings in \"" << strings[i] << "\" is " << count_substrings(strings[i]) << endl;
}
return 0;
}
```
输出结果与 Python 版本相同:
```
The number of substrings in "abc" is 6
The number of substrings in "defg" is 10
The number of substrings in "hijklmno" is 28
```
该代码中,`count_substrings` 函数接受一个字符串作为参数,返回该字符串的子串个数。具体实现是使用两个嵌套循环枚举所有可能的子串,然后累加计数器。在 `main` 函数中,我们遍历字符串数组 `strings`,并对每个字符串调用 `count_substrings` 函数来输出结果。