Grokking the Coding Interview: Patterns for Coding Questions
Ask Author
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