码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode1370

时间:2020-03-08 09:30:13      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:ash   def   items   color   字符串   while   range   else   ring   

 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的时候,说明所有的字符都已经拼接到结果字符串中,返回结果字符串。

leetcode1370

标签:ash   def   items   color   字符串   while   range   else   ring   

原文地址:https://www.cnblogs.com/asenyang/p/12440421.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!