📌  相关文章
📜  国际空间研究组织 | ISRO CS 2016 |问题 40(1)

📅  最后修改于: 2023-12-03 14:50:47.555000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2016 |问题 40

该问题是一道编程问题,考察了程序员对于字符串操作、字典操作和循环处理的掌握程度。

问题描述

给定一个字符串,需要统计其每个字符出现的次数,并输出出现次数最多的前3个字符及其出现次数。

输入

一个字符串,长度不超过1000。

输出

输出三行,每行均为一个字符和它在原字符串中出现的次数,每行的内容格式为“char frequency”,按照出现次数逆序排序,如果出现次数相同时,按照字母的字典序升序排序。

示例

输入:

abbbccddee

输出:

b 3
d 2
c 2
解题思路

我们可以通过遍历整个字符串,使用一个字典来记录每个字符出现的次数。遍历完毕后,我们将字典按照出现次数逆序排序,如果出现次数相同则按照字典序排序,最后输出前三个字符及其出现次数即可。

具体实现方法可以参考以下代码:

# 输入字符串
s = input()

# 统计字符出现次数
freq = {}
for c in s:
    if c in freq:
        freq[c] += 1
    else:
        freq[c] = 1

# 按照出现次数逆序排序,如果出现次数相同则按照字典序排序
sorted_freq = sorted(freq.items(), key=lambda x: (-x[1], x[0]))

# 输出前三个字符及其出现次数
for i in range(min(3, len(sorted_freq))):
    print(sorted_freq[i][0], sorted_freq[i][1])
总结

本题实现较为简单,但需要注意排序规则的描述,以保证输出格式的正确性。在实际开发中,字符串操作、字典操作和循环处理是常见的编程技巧,掌握这些技巧可以使得程序员的代码更加高效和简洁。