zoukankan      html  css  js  c++  java
  • leetcode1370

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

  • 相关阅读:
    STM32-串口通信
    STM32-系统计时器(systick)
    字符串操作常用的函数
    基本MarkDown语法
    结构
    python入门
    贪心算法小结
    POJ1631_高深DP
    POJ3046ANT_COUNTING
    POJ1742coins
  • 原文地址:https://www.cnblogs.com/asenyang/p/12440421.html
Copyright © 2011-2022 走看看