蓝桥杯算法题(504:单词分析 难度:中等)

题目详细(见图)

 

 说实话,刚拿到题目还没有什么思路,然后看了看大佬们的题解分析后茅塞顿开,下面就详细介绍三种解题思路,每种方法都有一种截然不同的思考方式。

一. 方法一

详细讲解以注释形式写出

word = input()
a = 0
b = []
for i in word:
    c = word.count(i)    # 依次统计每个字母在所有单词中出现的次数
    if c >= a:
        a = c            # 取字母出现次数最多的次数是多少
for j in word:
    if word.count(j) == a:   # 如果j=a 则j就是次数出现最多的字母
        b.append(j)
b.sort()                 # 把列表b排序(从小到大)
print(b[0])
print(a)

 

 要是不知道哪步操作是干什么的,可以在中间写入print输出看看结果(如下图)

二. 方法二

s = list(input())
m = sorted(sorted(s), key=lambda x: s.count(x), reverse=True)[0]
print(m, s.count(m), sep='\n')

代码 m = sorted(sorted(s), key=lambda x: s.count(x), reverse=True)[0] 的作用是找出字符串 s 中出现次数最多的字符。

具体解释如下:

sorted(s) 将字符串 s 转换为一个由字符组成的列表,并按照字符的字典序进行升序排序。 key=lambda x: s.count(x) 是一个函数,被传递给 sorted() 函数作为排序的关键字参数。这里使用 lambda 表达式定义了一个匿名函数,函数的输入参数为 x,表示列表中的每个字符。通过 s.count(x) 可以统计字符 x 在字符串 s 中出现的次数,将其作为排序的依据。 reverse=True 表示按降序排列。因为我们想要找到出现次数最多的字符,所以需要降序排列。 [0] 表示取排序后的列表中的第一个元素,即出现次数最多的字符。 最终,变量 m 中存储的是字符串 s 中出现次数最多的字符。

三. 方法三 

详细讲解以注释形式写出

a = input()
b = [0] * 256  # 构建一个长度为256,每个元素都为0的列表
for i in a:
    b[ord(i)] = b[ord(i)] + 1  # ord()函数把字母转为ASCII码 把字母ASCII码值所对应的b的列表的下表元素的值+1(字母每出现一次,该值加一)
print(chr(b.index(max(b))))    # chr()函数把ASCII值反转, index()函数找对象的索引位置
print((max(b)))

 

猜你喜欢

转载自blog.csdn.net/2301_77160836/article/details/132958307