Back to course home
0% completed
Vote For New Content
Priority queue isn't accepted at interview. You have to provide O(N).
lejafilip
Oct 17, 2024
Here you have solution for frequentMap + odd/even approach. Just fill every even with the biggest.
std::unordered_map<char, int> frequentMap; for(const auto& ch : s) { frequentMap[ch]++; } auto biggestChar = 'a'; auto biggestCount = 0; for(const auto& [ch, count] : frequentMap) { if(biggestCount < count) { biggestChar = ch; biggestCount = count; } } frequentMap.erase(biggestChar); std::string result(s.size(),' '); for(auto i = 0; i < result.size(); i+=2) { if(biggestCount == 0) { auto ch = frequentMap.begin()->first; result[i] = ch; frequentMap[ch]--; if(frequentMap[ch] == 0) frequentMap.erase(ch); } else { result[i] = biggestChar; biggestCount--; } } for(auto i = 1; i < result.size(); i+=2) { if(biggestCount > 0) return ""; auto ch = frequentMap.begin()->first; result[i] = ch; frequentMap[ch]--; if(frequentMap[ch] == 0) frequentMap.erase(ch); } return result;
0
0
Comments
Comments