1 class Solution: 2 def sortString(self, s: str) -> str: 3 n = len(s) 4 dic = {} 5 for i in range(n): 6 if s[i] not in dic: 7 dic[s[i]] = 1 8 else: 9 dic[s[i]] += 1 10 sorted_dic1 = sorted(dic.items(),key=lambda x:(x[0])) 11 sorted_dic2 = sorted(dic.items(),key=lambda x:(x[0]),reverse=True) 12 count = 0 13 result = '' 14 while count < n: 15 for d in sorted_dic1: 16 key = d[0] 17 if dic[key] > 0: 18 dic[key] -= 1 19 result += key 20 count += 1 21 for d in sorted_dic2: 22 key = d[0] 23 if dic[key] > 0: 24 dic[key] -= 1 25 result += key 26 count += 1 27 return result
算法思路:hash。
使用字典记录每一个字符出现的次数,对这个字典进行两次排序。
按照字符正序排序,按照字符反序排序。
进行“蛇形”循环,先遍历正序字典,每次从中取出一个字符拼接到结果字符串;再遍历反序字典,每次从中取出一个字符拼接到结果字符串。
当拼接次数为n的时候,说明所有的字符都已经拼接到结果字符串中,返回结果字符串。