python3 面试 实现删除字符串中出现次数最少的字符

题目

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

输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于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)

  

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/15045543.html