题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
我的思路:
# 1、 先遍历数组得到每个字符出现的次数,用字典映射方式实现
# 2、 遍历字典, 过程中获得最小value值min和对应的字符,字符添加到集合B ,若有相同value值的也添加到集合B,\
# 若有更小的value值则更新min且清空集合B后添加对应的字符到集合B中
# 3、 最后遍历字符串的字符,若字符存在于B中,则去掉
# 4、 没有说可以输入几个字符串
import sys
adict = {}
def add_ch_count_to_dict(ch: str):
if adict.get(ch):
adict[ch] += 1
else:
adict[ch] = 1
lines = sys.stdin.read().split("\n")[:-1]
for line in lines:
for ch in line:
add_ch_count_to_dict(ch)
min_count = None
min_characters = set()
for ch, count in adict.items():
if (not min_count) or (min_count > count):
min_count = count
min_characters.clear()
min_characters.add(ch)
elif min_count == count:
min_characters.add(ch)
elif min_count < count:
pass
else:
raise ValueError(f"min_count : {min_count}, 代码不该走到这里")
result = []
for ch in line:
if ch not in min_characters:
result.append(ch)
print("".join(result))
adict.clear()

查看1道真题和解析
