题目:
小蓝正在学习(✿◡‿◡)一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。
输入:
输入一行包含一个单词,单词只由小写英文字母组成。
对于所有的评测用例,输入的单词长度不超过 1000。
输出:
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
这个题有很多方法,在这边博客中,我将介绍两种代码块 q(≧▽≦q) 来解决这个问题,我个人比较推荐第一种,第二种没必要这样写,平常也用不着写的这么简短
法一:
- 从键盘读入数据赋值给word
- 对word分别进行两次for循环进行遍历
- 一次获取到元素最大的出现次数是多少
- 一次获取到出现次数最大的元素,并存储到一个列表中
- 第二次是for循环获取到的列表,将其对相同的元素进行下标排序,下标小的排序在前面
- 对结果进行输出
import os
import sys
# 请在此输入您的代码
# word来存储从键盘输入的字符串数据
print("请输入单词")
word = input()
# a为出现最多的次数
a = 0
# 列表b用来存储出现次数最多的元素
b = []
# 遍历单词
for i in word:
# 计算每个字母出现的总次数,并赋值给c
c = word.count(i)
# print(c)
# 如果c>=a,即元素出现次数比上一个大的,赋值给a
if c >= a:
# a为元素出现的最大次数
a = c
# 遍历字符串列表
for j in word:
# 判断是否为出现次数最多的元素
if word.count(j) == a:
# 如果是出现次数最多的元素,则把该元素添加到列表b中
b.append(j)
# 对列表b的元素进行升序排列,排序出现次数一样的字母,将下标小的放在前面
b.sort()
# print(b.sort())
#打印出第一个出现次数最多的元素
print(b[0])
# 打印出元素出现最多的次数
print(a)
还有一种方法,仅需要三行代码就可以完成,但是这三行代码包含的内容比较多,不是很容易思考出来,要求对python的了也得很足 🍭🍭 ,我将努力的写好注释帮助大家理解,虽然但是emm🤣🤣🤣,我感觉我到比赛的时候还是写不出来这个方法(︶^︶),哈哈哈,比赛不推荐这种方法嗷,如果是平常没事练练手倒是可以尝试一波嗷~😁😁😁
法二:
- 从键盘输入数据,并以列表的形式读取到s中
- 多次使用sorted函数找出出现次数最多的元素,并排序后取第一个数值赋值给变量m
- 输出结果,在输出的再次计算变量m出现的次数并输出
# 从键盘输入数据,并将数据转化为列表的形式写入到 s 中
s=list(input())
# 从列表 s 中找到出现次数最多的字符,并将其赋值给变量 m
# 括号内的sort(s)按照列表s中原来的顺序对s进行排序
# 括号外的sorted对已经排序的s列表次进行降序排列,将出现次数最多的元素按顺序排在前列
# key=lambda自定义排序规则 reverse=True按照降序排列
#最后将排序后的第一个元素即第一次出现次数最大的元素赋值给变量m
m=sorted(sorted(s),key=lambda x:s.count(x),reverse=True)[0]
# sep 指定每个打印项之间的分隔符,默认为空格
# 打印出m,s.count(m)计算m出现的最多次数,用换行符分割这两个变量
print(m,s.count(m),sep='\n')