首页 > 学院 > 开发设计 > 正文

删除字符串中出现次数最少的字符

2019-11-08 00:55:44
字体:
来源:转载
供稿:网友

题目描述

实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

输入描述:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。

输出描述:

删除字符串中出现次数最少的字符后的字符串。

输入例子:
abcdd
输出例子:

dd

题目分析:注意题目中几个要注意的问题:(1)输入的字符串长度<=20(2) 删除字符串中出现次数最少的字符串,而保留的字符顺序不发生改变因为要统计到每个字符出现的次数 所以可以使用字典 这里我使用到了OrderDict 其实使用Counter这种字典类会更方便python代码实现:
import sysfrom collections import OrderedDictdef deleteChar(line):    orderDict=OrderedDict()    #遍历字符串中的每个单词    for c in line:        if c not in orderDict:            orderDict[c]=1        else:            orderDict[c]+=1    #对字典按照出现的次数进行排序    #reverse=False是从小到大进行排序    sorted(orderDict.iteritems(),key=lambda x:x[1],reverse=False)    #PRint result    #从出现次数最小的开始删除    #获得字符出现的最小的次数    minTime=min(orderDict.values())    #print minTime    #print orderDict.values()    for item in orderDict:        if orderDict[item]<=minTime:            orderDict.pop(item)    #print orderDict    s=''    for c in line:        if c in orderDict:            s+=c    return stry:    while True:        line=sys.stdin.readline()        if not line:            break        if len(line[:-1])>20:            break        s=deleteChar(line[:-1])        print s        # s=''        # for item in leftList:        #     s+=item        # print sexcept:    pass


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表