• 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'))

    结果:

  • 相关阅读:
    懒加载
    通过Xib自定义控件
    自定义控件
    swiper_banner图的封装
    uni-app中封装的search和scroll-view
    使用git从创建仓库或项目到push到远程并创建分支常用命令
    随手封装一个简单的日期组件(基于ele-ui的基础上)
    封装的一个时间条插件
    websocket的封装2
    websocket的封装1(做vue中的通信经常也是大概率用到的)
  • 原文地址:https://www.cnblogs.com/whycai/p/14412417.html
Copyright © 2020-2023  润新知