zoukankan      html  css  js  c++  java
  • python 练习题- 数据解压缩

    题目

     1 每个字符串跟着一个数字,表示字符串的重复次数
     2 先按照数字排序,再按照字符串排序,从小到大,
     3 
     4 例:
     5 c2a1
     6 结果
     7 acc
     8 
     9 例:
    10 c10aa2
    11 aaaacccccccccc

    思路:

    1 先将字符串和数字区分
    2 https://www.cnblogs.com/whycai/p/14411674.html
    3 
    4 排序
    5 https://www.cnblogs.com/whycai/p/14412133.html
    6 
    7 输出数据

    代码如下:

     1 # @Author  :whyCai
     2 # @Time    :2021/2/18 16:15
     3 
     4 class Solution:
     5     def returnStr(self, s) -> str:
     6 
     7         #1.取将字符和数字拆分
     8         numDict = {} #最终结果
     9         num = 0 #取数值的起始值
    10         for i in range(len(s)):
    11             #判断是否是数字
    12             if s[i].isdigit() :
    13                 # 如果第一个是数字,默认key 是 '0',value是该数字
    14                 if i == 0:
    15                     numDict['0'] = s[i]
    16                 #判断上一个是否是数字,如果是,将上一个值 + 该数字
    17                 if s[i-1].isdigit() :
    18                     numDict[list(numDict)[-1]] =  numDict[list(numDict)[-1]] + s[i]
    19                 # 如果上一个不是数字,key为之前的字符,value是该数字
    20                 else:
    21                     numDict[s[num:i]] = s[i]
    22                 num = i + 1
    23 
    24         # 2.排序
    25         # 按照key排序,从小到大
    26         dKey = sorted(numDict.items(), key=lambda i: i[0], reverse=False)
    27         # 转成字典
    28         dKey = dict(dKey)
    29         # 按照value排序,从小到大
    30         dValue = sorted(dKey.items(), key=lambda i: int(i[1]), reverse=False)
    31         numDictEnd = dict(dValue)
    32 
    33         #3.输出最终结果
    34         numDictEndList = list(numDictEnd)
    35         strEnd = ''
    36         for i in range(len(numDictEndList)):
    37             num = numDictEndList[i]
    38             strEnd = strEnd + num * int(numDictEnd[num])
    39         return strEnd
    40 
    41 print (Solution().returnStr('f3c3b3a3c3'))

    结果:

  • 相关阅读:
    Java实现 计蒜客 拯救行动
    Java实现 计蒜客 拯救行动
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 174 地下城游戏
    Java实现 LeetCode 173 二叉搜索树迭代器
    Java实现 LeetCode 173 二叉搜索树迭代器
    Visual Studio的SDK配置
    怎样使用CMenu类
    mfc menu用法一
  • 原文地址:https://www.cnblogs.com/whycai/p/14412417.html
Copyright © 2011-2022 走看看