Greedy/2983.Palindrome-Rearrangement-Queries/Readme.md
首先我们预处理一下,将s的后半段翻转之后记为t,令s和t的长度都是m=n/2。并且将两个字符串都看做1-index。
我们容易得到s中可以重排的区间记做[a,b],t中可以重排的区间记做[c,d]. 考虑到这两个区间可能有多种交汇的可能:不相交、相交但不包含,完全包含。我们做如下区间处理:
{max(a,c), min(b,d)},注意该区间可能为空。if (a<=c-1) A.push_back({a, c-1});
if (d+1<=b) A.push_back({d+1, b});
if (c<=a-1) B.push_back({c,a-1});
if (b+1<=d) B.push_back({b+1,d});
判断合法的条件有如下: