[Python 3] Simple Clean code, beats >98% speed.
Strategy : \n1. Maintain a counter/dictionary of all characters\n2. Maintain a list of sorted characters\n3. Everytime a character is chosen from the dictionary
Strategy : \n1. Maintain a counter/dictionary of all characters\n2. Maintain a list of sorted characters\n3. Everytime a character is chosen from the dictionary its count is reduced, if it becomes zero the dictionary key is removed\n4. Iterate over this list in ascending and descending order alternatively, adding elements to the result string, unitl the dictionary is not empty\n```\nclass Solution:\n    def sortString(self, s: str) -> str:\n        \n        res = \'\'\n        counter = dict(collections.Counter(s))\n        chars = sorted(list(set(s)))\n        \n        while(counter):\n            for char in chars:\n                if char in counter:\n                    res += char\n                    counter[char] -= 1\n                    if counter[char] == 0:\n                        del counter[char]\n            for char in reversed(chars):\n                if char in counter:\n                    res += char\n                    counter[char] -= 1\n                    if counter[char] == 0:\n                        del counter[char]\n                        \n        return res\n```
['String', 'Greedy', 'Python', 'Python3']