【蓝桥】——2020年11届省赛Python组必会真题+解析+代码——单词分析

题目

# 输入描述
# 输入一行包含一个单词,单词只由小写英文字母组成。
#
# 对于所有的评测用例,输入的单词长度不超过 1000。
#
# 输出描述
# 输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
#
# 第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
#
# 输入输出样例
# 示例 1
# 输入
# lanqiao
# 输出
# a
# 2
# 示例 2
# 输入
# longlonglongistoolong
# 输出
# o
# 6

解析

最简单的理解就是方法一,字符串count()方法+字典clear()方法
首先s接收输入的字符串
预定义max_times
然后for循环从字符串s中分解遍历出各个字符
如果字符出现的次数大于max_times
则将字符和字符出现的次数放入字典result中
如果有字符的出现次数大于已放入字典中的字符的出现次数
则将字典清除,将新的字符和字符的出现次数放入字典result中


方法二的思路和方法一基本一样,但是使用的是列表
不会出现当字符的出现次数大于已放入字典中的字符的出现次数就得要清除的情况

代码

#方法一
s = str(input())
result = {}
max_times = 0
for s_max in s:
  #从字符串中循环分解得出各个字符(s_max)
  if s.count(s_max) > max_times:
    #如果在字符串s中的字符出现次数(s.count(s_max)) > max_times
    result.clear()
    #将字典的内容全部清除
    result[s_max] = s.count(s_max)
    #字典中的id为字符串出现的字符,value为字符在字符串出现的次数
    max_times = s.count(s_max)
    #max_times对象将存储字符串中分解后的字符的出现次数
  elif s.count(s_max) == max_times:
    #否则在字符串s中的字符的出现次数 == 已存储的max_times
    result[s_max] = s.count(s_max)
print(result)




#方法二
# s = list(input())
# sl = list(set(s))			
# r = []
# maxV = 0
# for si in sl:
#     c = s.count(si)
#     if c>maxV:
#         maxV = c
# for si in sl:
#     if s.count(si) == maxV:
#         r.append(si)
# r.sort()
# print(r[0])
# print(maxV)

**

如果有不同意见的朋友,或者有不同思路的大佬们,欢迎在评论区讨论!

**

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

词一丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值