水题,直接贪心,可以转化成统计前后半部分数量最多的字符数量分别是多少。不难发现前后部分独立,分别处理即可。
#include <bits/stdc++.h> using namespace std; int main() { std::cin.tie(nullptr)->sync_with_stdio(false); std::string s; std::cin >> s; auto calc = [&](std::string s) -> int { std::map<char, int> mp; int mx = 0; for (auto c : s) mx = std::max(mx, ++mp[c]); return s.size() - mx; }; int n = s.size(); std::cout << calc(s.substr(0, n / 2)) + calc(s.substr(n / 2)); return 0; }