#include <iostream>
#include <string>
#include <map>
int solution(const std::string& S) {
// PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE
// write code here
std::map<char, int> map;
for(auto c: S){
map[c]++;
}
int ans = 0;
int n = map.size();
for(auto m: map){
if(m.second > 1){
if(n + (m.second - 1) / 2 <= 24){
n = n + (m.second - 1) / 2;
ans += m.second / 2;
}else{
m.second -= (24 - n + 1) * 2;
ans += 24- n + 1;
ans += m.second;
n = 24;
}
}
}
return ans;
}
int main() {
std::cout << (solution("abab") == 2) << std::endl;
std::cout << (solution("aaaa") == 2) << std::endl;
std::cout << (solution("abcabc") == 3) << std::endl;
}
分为两种情况 1.当其中的种类小于24 的时候减少两个元素消耗一次 2.当元素的种类大于24时减少一个元素的消耗为1