如何使用C++编程来统计并输出一个只包含0和1的字符串中每个连续1子串的个数?
时间: 2024-12-04 10:21:36 浏览: 20
在C++中,你可以通过遍历字符串并维护一个计数器来统计连续1子串的个数。这里是一个简单的示例函数,它接受一个只包含0和1的字符串作为输入:
```cpp
#include <iostream>
#include <string>
std::pair<int, int> countConsecutiveOnes(const std::string& str) {
int currentCount = 0;
int maxCount = 0;
for (char c : str) {
if (c == '1') {
currentCount++;
if (currentCount > maxCount)
maxCount = currentCount;
} else {
currentCount = 0; // 如果遇到0,重置计数
}
}
return {maxCount, currentCount}; // 返回最大连续1子串次数和最后一次遇到的连续1子串次数
}
int main() {
std::string input = "101010101";
auto result = countConsecutiveOnes(input);
std::cout << "最长连续1子串的次数: " << result.first << std::endl;
std::cout << "最后的连续1子串的次数: " << result.second << std::endl;
return 0;
}
```
这个程序首先初始化当前连续1的数量(`currentCount`)和最大连续1的数量(`maxCount`)。然后逐个检查字符串中的字符,如果遇到'1',就增加计数;遇到'0'则清零计数。最后返回最大连续1的次数以及最后一次遇到的连续1子串的次数。
阅读全文