#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
string s;
if (!(cin >> s)) return 0;
int ans = 0;
int lzone = 0, mzone = 0, szone = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == 'L') lzone++;
else if (s[i] == 'M') mzone++;
else szone++;
}
int lstart = 0, lend = lzone - 1;
int mstart = lzone, mend = lzone + mzone - 1;
int sstart = lzone + mzone, send = (int)s.length() - 1;
int minl = 0, sinl = 0, linm = 0, sinm = 0, lins = 0, mins = 0;
for (int i = lstart; i <= lend; i++) {
if (s[i] == 'M') minl++;
else if (s[i] == 'S') sinl++;
}
for (int i = mstart; i <= mend; i++) {
if (s[i] == 'L') linm++;
else if (s[i] == 'S') sinm++;
}
for (int i = sstart; i <= send; i++) {
if (s[i] == 'M') mins++;
else if (s[i] == 'L') lins++;
}
ans += min(lins, sinl) + min(linm, minl) + min(sinm, mins);
// 每三本形成一个环的书需要两次交换
ans += (abs(lins - sinl) + abs(linm - minl) + abs(sinm - mins)) / 3 * 2;
cout << ans;
return 0;
}本质上就是先按L,M,S分块,本来在对应块里的不用动,优先换互相占了对方位置的书,这样换一次就能使两本书到对应位置,剩下的书每三本成环,每个环要交换两次
0 回复
0 转发
0 喜欢
13 阅读



