Day5 牛客-字符串归一化

Day5 牛客

本题目来自快手2019年秋招算法A卷。
通过键盘输入一串小写字母(a~z)组成的字符串。
请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。
例如字符串"babcc"归一化后为"a1b2c2"

Day5 牛客-字符串归一化

算法思路:

遍历字符串,将字符与出现的个数存在一个dict里面,然后再结合创建的dict的长度 和存放26个字母的s字符串去做比较,从小到大依次输出。算法思想较为简单,但感觉空间复杂度有点高啊,新开辟了dict,字母表s 和存放字符串的stra

import sys
try:
    dicta={}
    s='abcdefghijklmnopqrstuvwxyz'
    line = sys.stdin.readline().strip()
    if line=='':
        print('')
    for i in range(len(line)):
        if line[i] in dicta:
            dicta[line[i]]=dicta[line[i]]+1
        else:
            dicta[line[i]]=1
    k=26
    j=len(dicta)
    i=0
    stra=''
    while k and j:
        if s[i] in dicta:
            stra=stra+s[i]+str(dicta[s[i]])
            j-=1
        k-=1 
        i+=1
    print(stra)        
except:
    pass

通过了!!!

Day5 牛客-字符串归一化

然后尝试将报错的测试样例放入本地,运行:

Day5 牛客-字符串归一化
Day5 牛客-字符串归一化
在本地运行通过,,,,

总结:
一定要记得输出