题解 | #删除字符串中出现次数最少的字符#

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

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()

全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务