第十一届蓝桥杯python组第二场省赛-单词分析

1. 问题描述:
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。 小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。 现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
【输入格式】 
输入一行包含一个单词,单词只由小写英文字母组成。
【输出格式】 输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪个。 如果有多个字母出现的次数相等,输出字典序最小的那个。 第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
【样例输入】 lanqiao
【样例输出】
a
2
【样例输入】 longlonglongistoolong
【样例输出】
o
6
【评测用例规模与约定】 对于所有的评测用例,输入的单词长度不超过 1000。

2. 思路分析:

分析题目可以知道我们在遍历字符串的时候对出现的字符进行计数,对于python语言可以使用字典进行计数,可以使用collections.defaultdict(int)方法定义字典的值为int类型(collections模块中存在很多对于字典、双端队列、元组等非常有用的方法),这样在计数的时候如果键不存在那么会自动初始化为0,计数结束之后对字典按照值由大到小进行排序,最后输出排序之后对应的第一个键与值即可

3. 代码如下:

import collections

if __name__ == '__main__':
    # 很明显使用python中的字典对其进行计数即可, 使用defaultdict(int)方法当键不存在的时候那么会自动初始化为0
    dic = collections.defaultdict(int)
    s = input()
    for c in s:
        dic[c] += 1
    # 使用lambda表达式对字典进行排序, x[1]表示按照值进行排序, reverse表示从大到小排序
    dic = sorted(dic.items(), key=lambda x: x[1], reverse=True)
    print(dic[0][0])
    print(dic[0][1])

猜你喜欢

转载自blog.csdn.net/qq_39445165/article/details/114979334