题目
# 输入描述
# 输入一行包含一个单词,单词只由小写英文字母组成。
#
# 对于所有的评测用例,输入的单词长度不超过 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)
**
如果有不同意见的朋友,或者有不同思路的大佬们,欢迎在评论区讨论!
**