返回目录
题目描述
均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。
给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定:字符串中只包含大写的 X 和 Y 两种字符。
输入描述
输入一个均衡串。
- 字符串的长度:[2, 10000]。
- 给定的字符串均为均衡字符串
输出描述
输出可分割成新的均衡子串的最大个数。
备注
分割后的子串,是原字符串的连续子串
示例:
输入 | XXYYXY |
---|---|
输出 | 2 |
说明 | XXYYXY可分割为2个均衡子串,分别为:XXYY、XY |
输入 | RLLLLRRRLR |
---|---|
输出 | 3 |
说明 | 可以分割为RL、LLLRRR、LR |
题目解析
本题要求分割出最多的均衡子串,含义其实是分割出来的均衡子串无法再分解。
比如用例 "XXYYXY" 分解出来的两个子串 "XXYY" 和 "XY" 都是无法再次分解出均衡子串的。
如果我们从一个均衡串中取走一个的均衡子串,则均衡串剩余部分依旧是一个均衡串,因为取走的均衡子串中X和Y的数量是相等,因此均衡串剩余部分的X和Y数量也一定是相等的,满足均衡串要求。
因此,本题我们只需要从左往右扫描输入的均衡串每个字符即可,统计扫描过程中,X字符和Y字符的数量,每当两种字符数量相等时,则说明遇到了一个不可分解的均衡子串。
Python算法源码
# 接收用户输入的字符串
s = input()
# 初始化计数器和答案
countX = 0
countY = 0
ans = 0
# 遍历输入字符串的每个字符
for char in s:
if char == 'X':
countX += 1
else:
countY += 1
# 如果'X'和'Y'的数量相等,答案加一
if countX == countY:
ans += 1
# 输出答案
print(ans)
C算法源码
#include <stdio.h>
int main() {
char s[1000];
scanf("%s", s);
int countX = 0;
int countY = 0;
int ans = 0;
for (int i = 0; s[i] != '\0'; i++) {
if (s[i] == 'X') {
countX++;
} else {
countY++;
}
if (countX == countY) {
ans++;
}
}
printf("%d\n", ans);
return 0;
}
Java算法源码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 创建Scanner对象来读取标准输入
Scanner sc = new Scanner(System.in);
// 读取一行输入作为字符串s
String s = sc.nextLine();
// 初始化计数变量和答案变量
int countX = 0;
int countY = 0;
int ans = 0;
// 初始化索引变量
int i = 0;
// 使用while循环遍历字符串直到末尾
while (i < s.length()) {
// 如果当前字符是'X',增加X的计数
if (s.charAt(i) == 'X') {
countX++;
} else {
// 否则,假定只有'Y',增加Y的计数
countY++;
}
// 如果X和Y的计数相等,增加答案变量
if (countX == countY) {
ans++;
}
// 移动到下一个字符
i++;
}
// 输出最终的答案
System.out.println(ans);
}
}
5 条评论
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]真题目录序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆ 围棋的气逻辑分析☆☆☆ 分割平衡字符串逻辑分析☆☆☆ 机器人搬砖二分法☆☆☆ 转盘寿司数据结构/栈/单调栈☆☆☆ 小明找位置二分法☆☆☆ 提取字符串的最长合法简单数学表达式双指针☆☆☆☆ 掌握的单词[...]