2024华为OD机试真题目录-(B卷C卷D卷)-【C++ Java Python】
题目描述
均衡串定义: 字符串只包含两种字符,且两种字符的个数相同。
给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定字符串中只包含大写的X和Y两种字符。
输入描述
均衡串: XXYYXY
字符串的长度[2,100001]。给定的字符串均为均衡串
输出描述
可分割为两个子串:
XXYY
XY
备注
分割后的子串,是原字符串的连续子串。
用例1
输入
XXYYXY
输出
2
用例23
输入
XYYXXYXXYY
输出
4
考点
逻辑分析
解题思路
初始化计数器变量 count 为0,用于统计当前遍历到的 ‘X’ 和 ‘Y’ 的数量差值;
初始化结果变量 res 为0,用于记录分割出的均衡子串的数量。遍历整个输入字符串:
当遇到字符 ‘X’ 时,将 count 加1;
当遇到字符 ‘Y’ 时,将 count 减1;
当 count 变为0时,说明从字符串起始位置到当前位置形成了一个均衡子串,因此将结果变量 res 加1。最后,输出结果变量 res,即为所求的均衡子串的最大个数。
代码
c++
#include <bits/stdc++.h>
using namespace std;
int main() {
string str;
cin>>str;
int count=0, res=0;
for(int i=0;i<str.size();i++) {
if(str[i]=='X'){
count++;
}else{
count--;
}
if(count==0){
res++;
}
}
cout<<res<<endl;
system("