题目描述:
均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定:字符串中只包含大写的 X 和 Y 两种字符。
输入描述:
输入一个均衡串,字符串的长度:[2, 10000],给定的字符串均为均衡字符串
输出描述:
输出可分割成新的均衡子串的最大个数。
备注
分割后的子串,是原字符串的连续子串
示例:
输入
XXYYXY
输出
2
说明:
XXYYXY可分割为2个均衡子串,分别为:XXYY,XY
C++源码:
#include <iostream>
#include <string>
#include <ctime>
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <map>
#include <sstream>
using namespace std;
int main() {
string s;
cin >> s;
int balanceCount = 0; // 用于记录当前连续均衡子串的数量
int result = 0; // 最终的最大均衡子串分割数
for (size_t i = 0; i < s.length(); ++i) {
if (s[i] == 'X') {
balanceCount++;
}
else {
balanceCount--;
}
// 当balanceCount回到0,说明遇到了一个平衡点
if (balanceCount == 0) {
result++; // 增加一个有效的均衡子串计数
}
}
cout << result << endl;
system("pause");
return 0;
}