首页 > 试题广场 >

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

[编程题]删除字符串中出现次数最少的字符
  • 热度指数:407860 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的仅由小写字母构成的字符串,删除字符串中出现次数最少的字符。输出删除后的字符串,字符串中其它字符保持原来的顺序。
\hspace{15pt}特别地,若有多个字符出现的次数都最少,则把这些字符都删除。

输入描述:
\hspace{15pt}在一行上输入一个长度为 1 \leqq {\rm length}(s) \leqq 20 ,仅由小写字母构成的字符串 s ,代表待处理的字符串。


输出描述:
\hspace{15pt}在一行上输出一个字符串,代表删除后的答案。保证这个字符串至少包含一个字符。
示例1

输入

aabcddd

输出

aaddd

说明

\hspace{15pt}在这个样例中,出现次数最少的字符为 \texttt{`b'}\texttt{`c'} ,因此需要同时删除这两个字符。
#data_dict = {}
s = input()
min_data_list = [s[0]]
min_value = s.count(s[0])
max_value = s.count(s[0])
for c in s:
    if c in min_data_list:
        pass
    else:
        value = s.count(c)
        if value < min_value:
            min_data_list.clear()
            min_data_list.append(c)
            min_value = value
        elif value == min_value:
            min_data_list.append(c)
            min_value = value
        elif value > min_value:
            pass 
        max_value = max(s.count(c),max_value)

if min_value == max_value:
    print(s)
else:
    result = ''
    for c in s:
        if c not in min_data_list:
            result +=c 
        else:
            pass 
    print(result)
    

发表于 2025-11-27 01:52:56 回复(0)
s = input()
c = list(dict.fromkeys(s))#按顺序不重复的列出各字符
num = []
for i in c:#数出C列表各字符的出现个数
    a = s.count(i)
    num.append(a)
for i ,value in enumerate(num):#依据num列表中的最小的数,找到对应的字符并去除
    if value == min(num):
        s = s.replace(c[i],"")
print(s)


发表于 2025-11-26 17:29:26 回复(0)
这道题有点懵 看了题友解答出来的 今天就到这吧
from collections import Counter
s = list(input())
new_dic = dict(Counter(s))
# 找到出现最少的次数
min_num=min(new_dic.values())
# 找到次数为1的k-v 去除它
for k,v in new_dic.items():
    if v==min_num:
        for i in s:
            if i==k:
                s.remove(i)
print("".join(s))


发表于 2025-11-13 17:25:28 回复(0)
from collections import Counter
s = list(input())
new_dic = dict(Counter(s))
min_n = min(new_dic.values())
for key, value in new_dic.items():
    if value == min_n:
        for c in s:
            if c == key:
                s.remove(c)
print(''.join(s))

发表于 2025-09-04 13:05:04 回复(0)
line=input()
z={}
for i in line:
    if i in z:
        z[i]=z[i]+1
    else:
        z[i]=1
m=min(z.values())

for i in z:
    if z[i]==m:
        line=line.replace(i,"")
print(line)

发表于 2025-08-24 21:11:46 回复(0)
line = input()
set_line = list(set(line))
count_num = [line.count(s) for s in set_line]
if min(count_num) == max(count_num):
    print(line)
else:
    min_num = min(count_num)
    while min(count_num) == min_num:
        min_index = count_num.index(min_num)
        line = line.replace(set_line[min_index], '')
        set_line.pop(min_index)
        count_num.pop(min_index)
    print(line)

发表于 2025-07-26 16:06:53 回复(0)
old_str = input().strip()

word_map = {}

for i, sub in enumerate(old_str):
    if sub in word_map:
        word_map[sub]+=1
        continue
    word_map.update({sub:1})

# 按字母出现次数排序
word_list = sorted(list(word_map.items()), key=lambda x: x[1])

# 待删除字母(默认第一个)
del_word = [word_list[0][0]]
# 添加相同次数字母(从第二个开始遍历)
for word in word_list[1:]:
    if word[1] != word_list[0][1]:  # 与第一个出现次数不同
        break
    del_word.append(word[0])

for word in del_word:
    old_str = old_str.replace(word, '')

print(old_str)
    

发表于 2025-06-21 16:44:55 回复(0)
s = input()
dic = {}
for c in s:
    dic[c] = s.count(c)
# dic = sorted(dic.items(), key=lambda x: x[1])
# num = dic[0][1]
num = min(dic.values())
res = []
for i in s:
    if s.count(i) != num:
        res.append(i)
print("".join(res))

发表于 2025-06-21 15:52:38 回复(0)
str = input()
l1 = list(str)
d1 = {}

for i in str:
    d1[i] = str.count(i)
for j in d1:
    if d1[j] == min(d1.values()) and min(d1.values()) ==1:
        l1.remove(j)
    elif d1[j] == min(d1.values()) and min(d1.values()) != 1:
        for i in range(min(d1.values())):
            l1.remove(j)
print(''.join(l1))
发表于 2025-06-04 17:08:03 回复(0)
#考虑了输入时出现例如aa单一字母组成的字符串的情况
s=list(input())

lis=[]
for i in s:
    lis.append(s.count(i))

lis2=[]
for i in range(len(s)):
    if lis[i]==len(s):
        lis2=s
    elif min(lis)==lis[i]:
        continue
    else:
        lis2.append(s[i])
   
print("".join(lis2))

发表于 2025-05-27 18:59:25 回复(0)
s = input()

dic = {} # Initialize a dictionary to count the occurrence of the letters.
for char in s:
    if char not in dic:
        dic[char] = 1
    else:
        dic[char] += 1

lowest_occur = min(dic.values())

str_rem = '' # Use an empty string to store letters to remove
for key, value in dic.items(): # Use the .items() method to iterate over the key-value pairs.
    if value == lowest_occur:
        str_rem += key

for char in str_rem:
    s = s.replace(char, "") # Use the .replace() method to remove the specified characters in str_rem.

print(s)
发表于 2025-04-08 17:49:15 回复(0)
s=input().strip()
dic = {char: s.count(char) for char in set(s)}
c=min(dic.values())
for i in s:
if dic[i]==c:
s=s.replace(i,'')
print(s)

发表于 2025-04-03 01:57:50 回复(0)
str1 = input()
list1 = list(set(str1))
count_dict = {}
for i in list1:
    count = str1.count(i)
    count_dict[i] = count
need_replace = []
for key, value in count_dict.items():
    if value == min(count_dict.values()):
        need_replace.append(key)

for i in need_replace:
    str1 = str1.replace(i, '')
print(str1)

发表于 2025-04-01 12:44:16 回复(0)
a=list(input())
q=[]
for i in a:
    o=a.count(i)
    q.append(o)
b=min(q)
t=q.count(b)
o=a[q.index(b)]
a.pop(a.index(o))
try:
    while 1:
        q.pop(q.index(b))
        o=a[q.index(b)]
        a.pop(a.index(o))
except:
    pass
for i in a:
    print(i,end="")

   
发表于 2025-03-29 19:40:05 回复(0)
from collections import Counter
str_ = input()
dict_ = Counter(list(str_.lower()))
min_val = min(dict_.values())
print(''.join([key for key in list(str_.lower()) if dict_[key]!=min_val]))

from collections import Counter
str_ = input()
dict_ = Counter(list(str_.lower()))
min_val = min(dict_.values())
print(''.join([key for key in list(str_.lower()) if dict_[key]!=min_val]))

发表于 2025-03-13 06:54:04 回复(0)
感觉好理解些
s = input()
n = set(s)
a = []
for i in n:
a.append(s.count(i))
for i in s:
if s.count(i) != min(a):
print(i,end='')
发表于 2025-03-10 15:41:21 回复(0)
a = input()
lis =[]
d = a.count(a[0])
for element in  a :
    num = a.count(element)
    if num < d:
        lis = []
        lis.append(element)
        d = num
    elif num == d:
        lis.append(element)
    else:
        continue
for i in lis:
    a = a.replace(i,"")
print(a)

发表于 2025-02-28 15:26:20 回复(0)
n=input()
s=set(n)
m=[]
p=[]
for j in s:
      mi=n.count(j)
      p.append(mi)
result=min(p)
for i in n:
  if n.count(i) !=result:
       m.append(i)
print("".join(m))        

发表于 2025-01-25 22:04:30 回复(0)
from collections import Counter
a = input()
r = Counter(a)# 统计字符中每个字符出现的次数,并放到一个字典中
# 找到出现次数最少的值
minvalue = min(r.values())

# 初始化一个空字符串来存储结果
s = ""

for char in a:
    if r[char] > minvalue:
        s += char

print(s)
发表于 2024-12-03 10:38:09 回复(0)