首页 > 试题广场 >

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

[编程题]删除字符串中出现次数最少的字符
  • 热度指数:387704 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
实现删除字符串中出现次数最少的字符,若出现次数最少的字符有多个,则把出现次数最少的字符都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。

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

输入描述:

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



输出描述:

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

示例1

输入

aabcddd

输出

aaddd
s=list(input())
l=[0]*len(s)

for i in range(len(s)):
    l[i]=s.count(s[i])
l1=sorted(l)


for i in range(len(s)):
    # print(i)
    if l[i]==l1[0]:
        s[i]=''
# print(s)
print("".join(s))


发表于 2024-04-03 15:38:38 回复(0)
s=input()
res={}
for i in s:
    if i not in res:
        res[i]=1
    else:
        res[i]+=1
min=min(res.values())
for i in s:
    if res[i]==min:
        s=s.replace(i,'')
print(s)






from re import I
s=input()
res=[]
data=''
for i in s:
    res.append(s.count(i))
for i in s:
    if s.count(i)>min(res):
       data+=i
print(data)
编辑于 2024-03-05 17:10:34 回复(0)
from collections import Counter
input_str = input()
c = Counter(input_str)
kv = c.most_common()
kv.sort(key=lambda v: v[1])
min_count = kv[0][-1]
for item in kv:
    if item[-1] == min_count:
        input_str = input_str.replace(item[0], '')
    else:
        break
print(input_str)

发表于 2023-10-08 11:20:54 回复(0)
import sys

dic = {}
count_list = []
string = ''
result_str = ''
for line in sys.stdin:
    a = line.split()
    for s in a[0]:
        if s in dic:
            dic[s] = dic[s] + 1
        else:
            dic[s] = 1
    # ==========================
    for item in dic.values():
        count_list.append(item) # 可简化!
    
    min_value = min(count_list)
    #======================================
    if all(item == min_value for item in dic.values()):
        print(a[0])
    else:
        # 可简化,没必要写两个 for
        for keys in dic.keys():
            if dic[keys] == min_value:
                string = string + keys # 可简化!
        
        for s in a[0]:
            if s not in string:
                result_str = result_str + s
        print(result_str,end='\n')

发表于 2023-03-23 22:44:40 回复(0)
import sys
list1=[]
b=input()
for i in b:
    list1.append(i)
list2= [x for i, x in enumerate(list1) if x not in list1[:i]]
list3=[]
for i in list2:
    n=0
    for j in list1:
        if i==j:
            n+=1
    if n==1:
        list3.append(i)
for i in list3:
    list1.remove(i)
for i in list1:
    print(i,end="")
案例的assssa,自测成功,但是没通过服务器测试,什么意思?
发表于 2023-02-18 14:29:10 回复(0)
string = input()
search = dict()
for char in string:
    if char in search.keys():
        search[char] += 1
    else:
        search[char] = 1

m = min(search.values())

for key, value in search.items():
    if value == m:
        string = string.replace(key, '')
print(string)

发表于 2022-09-13 19:39:19 回复(0)
str_a=input()
str_b=[]
dic_a={}
for str_0 in str_a:
    dic_a[str_0]=str_a.count(str_0)
for str_1 in str_a:
    if dic_a[str_1]!=min(dic_a.values()):
        str_b.append(str_1)
print("".join(str_b))
发表于 2022-09-13 01:51:16 回复(0)
s = input()
s1 = [*s]
d = []
for x in s:
    d.append(s1.count(x))
d.sort()
for x in s:
    if s.count(x) == d[0]:
        s1.remove(x)
print(*s1, sep='')
发表于 2022-09-10 16:33:48 回复(0)
while True:
    try:
        s = input()
        d,res = {},''
        for i in s:
            if i not in d:
                d[i] = s.count(i)
        Min = min(d.values())
        for j in s:
            if d[j] != Min:
                res += j
        print(res) 
    except:
        break
发表于 2022-09-05 07:49:55 回复(0)
发表于 2022-08-31 03:31:58 回复(0)
string = list(input())
test1,test2 = '',''
for alp in string:
    if alp not in test1:
        test1+= alp
mark = string.count(string[0])
for alp in test1:
    if mark >= string.count(alp):
        mark = string.count(alp)
for alp in string:
    if string.count(alp) != mark:
        test2 += alp
print(test2)

发表于 2022-08-30 19:17:43 回复(0)
s=input()
dict={}
for i in s:
    if i in dict:
        dict[i]+=1
    else:
        dict[i]=1
min_count=min(dict.values())
for i in s:
    if dict[i]==min_count:
        s=s.replace(i,'')
print(s)
发表于 2022-08-27 22:12:27 回复(0)
a=input()
jilu={}
for i in list(set(a)):
    jilu[i]=a.count(i)
new=[]
for i in jilu.keys():
    if jilu[i]==min(jilu.values()):
        a=a.replace(i,'')
print(a)

发表于 2022-08-26 16:55:20 回复(0)
from collections import Counter

s = input()
li = []
for i in s:
    if s.count(i) != min(Counter(s).values()):
        li.append(i)
        
print("".join(li))
发表于 2022-08-24 18:56:22 回复(0)
# 初步思路,使用字典进行设置
list1 = input()
temp = ''   #  用于保存中间变量
dict1 = {}
for i in list1:
    if i in temp:  # 假如出现重复的元素之后,那么对它的value值+1
        dict1[i] = dict1[i] + 1
    else:
        dict1[i] = 1  # 如果第一次出现,那么它的value值就是1
        temp = temp + i  # 把遍历出来的字符保存在变量中,方便后面判断重复元素
# 找到字典里面最小的value值
num = min(dict1.values())
# 获取这些最小的的key值对应的value的值--无法这样操作,所以使用遍历字典进行操作
k = ''
new_str = list(list1)
for j in dict1:
    if dict1[j] == num:
        for m in range(dict1[j]):
            new_str.remove(j)
print("".join(new_str))

发表于 2022-08-22 00:13:36 回复(0)
a=input()
b={}
for i in a:
    if i not in b.keys():
        b[i]=1
    else:
        b[i]=b[i]+1
c=min(b.values())
d={}
for i in b.keys():
    if b[i]==c:
        d[i]=c
e=''
for i in range(len(a)):
    if a[i] not in d.keys():
        e=e+a[i]
print(e)
发表于 2022-08-21 10:48:58 回复(0)
这题可以用字典把字符次数存储起来,也可以得到集合之后再统计每个字符的出现次数,遍历结束,替换掉原始字符串中最少次数的字符。因为字符串长度最大为20,因此min_num设置为大于20即可。

while True:
    try:
        raw_input = input()
        alpha_set = list(set(raw_input))
        min_num = 30
        mid_lst = []
        for num, i in enumerate(alpha_set):
            if raw_input.count(i)<min_num:
                min_num = raw_input.count(i)
                mid_lst.clear()
                mid_lst.append(i)
            elif raw_input.count(i) == min_num:
                mid_lst.append(i)
            if num == len(alpha_set)-1:
                for j in mid_lst:
                    raw_input = raw_input.replace(j, '')
        print(raw_input)
        
    except:
        break


发表于 2022-08-18 21:36:28 回复(0)
python删除字符串的时候注意一个小坑
我写的原理是不断while循环,当找到需要删除的就执行删除
这里删除的方法用的是字符串切片,但是要注意的是,切片后其实i就自动跳到下一个位置的i了,因为数组str变了。所以这里i = i不需要通过i = i+1来继续移动
比如aabcddd,的时候,i=2,执行切片删除后,字符串变成aacddd,这时候i=2就已经指向了c
import sys
 
for line in sys.stdin:
    a = line.split()
    str_input = a[0]
    
dict_str = {}

for i in str_input:
    if(i not in dict_str.keys()):
        dict_str[i] = 1
    else:
        dict_str[i] = dict_str[i] + 1

result = sorted(dict_str.items(),key = lambda s:s[1])
min_number = result[0][1]

finally_str = []
for i in result:
    if(i[1] == min_number):
        finally_str.append(i[0])

result_str = str_input[:]
i = 0 
while(i != len(str_input)):
    if(str_input[i] in finally_str):
        str_input = str_input[:i] + str_input[i+1:]
        i = i
    else:
        i = i+1
        continue
print(str_input)



发表于 2022-08-18 16:07:29 回复(0)
a = input()
dic = {}
world_output = ''
for world in a:
    if world not in dic:
        dic[world]=1
    else:
        dic[world] += 1

t= min(dic.values())
for world in a:
    if dic[world] != t:
        world_output += world
print(world_output)
发表于 2022-08-07 04:51:02 回复(0)