题目
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。
输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
输入例子:
abcdd
输出例子:
dd
解决代码
代码有点绕,绞尽脑汁想了好久,才写出来的
a='fbasdfsa' b=a flag=True newl=[] while flag: dell=[] #删除的字符列表 for i in a: if i not in dell: dell.append(i) #该轮某字符未删除,则删除 else: newl.append(i) #该轮某字符已删除,则不再删除 flag=False #经历了else,则还需要来一轮 print(dell,newl) print(flag) if flag: flag=False if len(newl)==0: newl=dell else: flag=True a=newl #原字符串重新定义 newl=[] #剩余字符列表置空 print(flag,a) print(newl) #求出被删除的字符列表 new="" for i in b: if i in newl: new+=i print(new)#求出未被删除的字符
参考大佬的代码,看起来清晰多了,但是需要对字符串、列表、字典的使用方法,了然于心,这样才能用起来游刃有余:;https://www.cnblogs.com/yoyoketang/p/14665973.html
a='fbasdfsa' d={} for i in a: if i not in d.keys(): d[i]=1 else: d[i]+=1 print(d) small=min(d.values()) for i in d.keys(): if d[i]==small: a=a.replace(i,'') print(a)
这里用到的python相关的知识点
字典的格式d={键1:值1,键2:值2}
字典里新增键,d[‘键3’]=3;因字典里的键不能重复,所以往字典里新增键时,必须先判断;
字典 根据值的条件,对相应的键做处理;循环遍历所有键 for i in d.keys();循环遍历所有值d[i]
字典 查所有值d.values(),以及找到最小值min(列表)
字符串中删除某些字符,这里使用替换来处理的,直接将源字符替换为空就可以了;字符串.replace(原字符,'')
多组输入
如下手动输入3组
#a='fbasdfsa' n=3 while n>0: a=input('请输入小写英文字符串:') print(a) n-=1 d={} for i in a: if i not in d.keys(): d[i]=1 else: d[i]+=1 print(d) small=min(d.values()) for i in d.keys(): if d[i]==small: a=a.replace(i,'') print(a)