蓝桥杯-每日一练4

题目

代码

import os

import sys

# 请在此输入您的代码

z = input()

z = z.lower()

n = int(input())

m = []

d = {}

l = []

for i in range(n):

  m.append(input().lower())

for i in m:

  count =0

  k = len(i)

  for j in range(len(z)):

    if i[0] == z[j] and i == z[j:j+k]:

        count += 1

  d[count]={i}

  l.append(count)

print(max(l))

v = str(d[max(l)])

print(v[2:-2])

问题:

改进

  1. 字典 d 中的值应该是一个列表,而不是一个集合。因为可能存在多个单词出现次数相同的情况,需要将它们都加入到列表中。
  2. 字典 d 中的键值对应该是累加,而不是覆盖。因为可能存在多个单词出现次数相同的情况,需要将它们都加入到同一个键对应的列表中。
  3. 当存在多个单词出现次数相同的情况时,输出的结果应该是按照字典序排序后的第一个单词,而不是一个列表。

以下是修改后的代码:

 

python复制代码

z = input()

z = z.lower()

n = int(input())

m = [] d = {}

l = []

for i in range(n):

 m.append(input().lower()

 for i in m: count = 0

 k = len(i)

  for j in range(len(z)):

     if i[0] == z[j] and i == z[j:j+k]:

         count += 1

         if count in d:

          d[count].append(i)

         else:

         d[count] = [i]

         l.append(count)

max_count = max(l)

result = sorted(d[max_count])

print(max_count)\

print(result)

修改后的代码中,字典 d 中的值是一个列表,使用 append 方法将单词加入到列表中;字典 d 中的键值对使用累加的方式,如果键已经存在,则将单词加入到对应的列表中;最后,将字典 d 中键值为最大值的列表排序后,输出列表中的第一个单词。

# 请在此输入您的代码

z = input().lower()

n = int(input())

# 内容

m = []

# count

d = []

#zzzz

v = []

for i in range(n):

    m.append(input().lower())

for i in m:

    count = 0

    k = len(i)

    for j in range(len(z)):

        if i[0] == z[j] and i == z[j:j + k]:

            count += 1

    d.append(count)

print(max(d))

for i in range(n):

    if d[i] == max(d):

        v.append(m[i])

v.sort()

for i in range(len(v)):

    if i > 0:

        if v[i] != v[i-1]:

            print(v[i])

    else:

        print(v[i])

改进2:

对结果进行筛选,把出现次数最大的片段提取粗来,并进行排序,用一个list进行接收,并用list的方法sort()进行从小到大的排序,然后再进行筛选,把重复的片段除去,因为之前已经进行了排序,所以只需要判断相邻的是不是相同的就可以

最后进行输出

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k笔墨丹青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值