分别输入两个字符串A和B,A由多个小字符串组成(中间由非字母隔开),B是由字母组成的字符串。求出A中包含B的小字符串的个数(详细看样例),并且输出它。(不区分大小写) 输入格式: 先输入字符串A,由回车结束。然后输入字符串B。 输出格式: 输出A中包含B字符串的个数、C++
时间: 2024-10-16 15:20:13 浏览: 31
在C++中,你可以通过遍历和匹配的方式来解决这个问题。这里是一个简单的步骤:
1. 定义一个函数`countSubstrings(A, B)`,接收两个字符串作为参数。
2. 首先将输入的字符串A和B都转换为小写,以便进行不区分大小写的比较。
3. 使用滑动窗口技巧遍历字符串A,每次从左向右移动一个字符,形成一个新的小字符串,检查这个小字符串是否与B相等。
4. 如果相等,计数器加一,并继续向右移动;如果不相等,就跳过当前位置的字符继续检查下一个。
5. 当遍历完A后,返回计数器的值。
以下是C++代码示例:
```cpp
#include <string>
#include <cctype>
int countSubstrings(std::string A, std::string B) {
// 转换为小写
std::transform(A.begin(), A.end(), A.begin(), ::tolower);
std::transform(B.begin(), B.end(), B.begin(), ::tolower);
int count = 0;
for (size_t i = 0; i <= A.size() - B.size(); i++) {
if (A.substr(i, B.size()) == B) {
count++;
}
}
return count;
}
// 主程序入口
int main() {
std::string inputA, inputB;
std::getline(std::cin, inputA); // 输入字符串A,忽略回车
std::getline(std::cin, inputB); // 输入字符串B
int result = countSubstrings(inputA, inputB);
std::cout << "A中包含B的小字符串个数: " << result << std::endl;
return 0;
}
```
阅读全文