题意
给一个只含ABC的字符串,
要求把字符串的A放在一起B放在一起C放在一起,
问最少有多少个字母需要被移动位置。
思路来源
翼神
题解
就是一波暴力啊,和秦皇岛那个字符串暴力题很像。
全排列ABC、ACB、BCA、BAC、CAB、CBA六种,
考虑是圆串,所以可简化为ABC、ACB两种,
预处理两个串,然后与原串暴力匹配即可,
原串也是圆串,所以将其重复一遍展成线性串。
统计一次的不同个数是O(n),然后用到滚动技巧。
这其实和滚动哈希那里线性求值差不多QAQ,也不知道是不是尺取。
A、B、C三部分向前滚动,l++,r++,修改下标更改时的值。
具体看代码吧,写的很丑.jpg
代码
#include
#include
#include
#include
#include
#include
#include