一、题目要求
均衡串定义: 字符串只包含两种字符,且两种字符的个数相同。
给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定字符串中只包含大写的X和Y两种字符。
输入描述:
均衡串: XXYYXY
字符串的长度[2,100001]。给定的字符串均为均衡串
输出描述:
XXYY
XY
【注】:分割后的子串,是原字符串的连续子串
二、解题思路
列表已有序,需要找到新元素插入的位置,直接二分查找后得到索引,又因为位置从1开始,所以输出索引值+1即可
三、完整代码
string = input()
count_x = 0 # x的计数
count_y = 0 # y的计数
count = 0 # 均衡子串的计数
t = 0 # 切片开始位置
j = 0 # 切片结束位置
# 遍历字符串
for i in string:
# 判断为X或Y,相应计数加1
if i == "X":
count_x += 1
else:
count_y += 1
# 判断两个计数是否相等,相等则切片
if count_x == count_y:
count += 1
a = string[t:j + 1]
t = j + 1
print(a, end=' ')
j += 1
print() # 换行输出
print(count)
"""
若只输出count则将其中i,j,a的代码删去即可
"""
输入测试
XXYYXY
输出结果
XXYY XY
2