删除字符串中出现次数最少的字符
题目描述
输入一行或多行字符串(只包含小写字母,不考虑非法输入),删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。然后保持原有顺序输出删除后的字符串。
做题思路
1.输入为多行字符串,遍历每一行,然后用一个字典来存放字符串的字符和出现次数,即字典key为出现字符,如果这个key在字典中没有,就将这个key对应的value置为1,如果这个key已经存在字典中,将这个key对应的value值加1
2.删除原字符串中出现次数最少的字符,出现次数最少的字符从步骤1中的字典中获取。我用del_min()来实现,先获取到字典中的最小value,然后遍历整个字典的key-value,如果value等于最小value,就将这个value对应的key加到一个临时的删除list中(用于后面的删除)。接下来,遍历原字符串,如果原字符串中的字符在临时的删除list中,那就删除原字符串的这个字符(这里我用了str.replace)
python代码实现
import sys
l1 = sys.stdin.readlines()
def del_min(d_str, d_dic):
min_value = min(dic.values())
tmp_list = []
for key,value in d_dic.items():
if value == min_value:
tmp_list.append(key)
for x in d_str:
if x in tmp_list:
d_str = d_str.replace(x, '')
return d_str
for x in l1:
x = x.strip()
dic = {}
for y in x:
if y in dic:
dic[y] += 1
else:
dic[y] = 1
x = del_min(x, dic)
print(x)