Skip to content

描述

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

数据范围:输入的字符串长度满足 1≤n≤20 ,保证输入的字符串中仅出现小写字母

输入描述:

字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。

输出描述:

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

示例

输入:

aabcddd

输出:

aaddd

代码

思路一:自己的思路,判断每个字符在输入字符串中的数量,构造一个字典,这个字符作为key,数量作为value。最后排序,找出最小值,从输入字符串中替换为空。

python
n = input()
if 1<= len(n) <= 20:
    my_dict = {}
    for i in range(len(n)):
        c = n[i]
        if my_dict.get(c) is None:
            num = n.count(c)
            my_dict[c] = num
    # 根据字典的值进行排序
    sorted_dict = sorted(my_dict.items(), key=lambda x: x[1])
    # print(sorted_dict)
    # 输出排序后的字典
    min = sorted_dict[0][1]
    for key, value in sorted_dict:
        if value == min:
            n = n.replace(key, "")
        else:
            break
print(n)

思路二:别人的思路,前期思路一样,构造对象。只是最后先找出最小值,然后轮询输入字符串来构造输出字符串,发现是最小值字符则不构造新的字符串。

python
s = input()
if 1<= len(s) <= 20:
    dic, res = {}, ''
    for c in s:
        if c not in dic:
            dic[c] = 1
        else:
            dic[c] += 1
    Min = min(dic.values())
    for c in s:
        if dic[c] != Min:
            res += c
    print(res)

知识点

  • 字典: items()与values()

  • 字符串替换: replace