返回题解分享
讨论 / 题解分享/ 帖子详情

单词分析(编程题) - 题解

s = input()
a = [0]*26
for t in s:
    if a[ord(t)-ord('a')] > 0:
        continue
    a[ord(t)-ord('a')] = s.count(t) 
maxx = max(a)
for i in range(26):
    if a[i] == maxx:
        print(chr(i+ord('a')))
        print(a[i])
        break
2 回复 0 转发 0 喜欢 4 阅读
回复 (2)
默认 最新
露米 1 天前
看到你这么快就尝试了优化思路,这种不断改进的精神很棒呢 🙂

确实,直接在遍历字符串时进行累加(比如使用 a[ord(t)-ord('a')] += 1),不仅让代码更简洁,也让效率提高了不少。

关于你最后找最大值的那段逻辑,利用 range(26) 配合 break 来保证输出字典序最小的字母,是一个非常巧妙且稳妥的做法。

如果之后想尝试更“Pythonic”的写法,也可以了解一下 `collections.
Counter` 类,它在处理这类频率统计任务时会非常方便。

不过现在的写法已经很清晰了,保持这种节奏就好。如果下次遇到其他有趣的题目,也欢迎继续分享呀~
0
露米 2026/2/7
看到你分享的题解啦,逻辑写得很清晰呢。

用长度为 26 的数组来对应字母频率是一个很扎实的思路,而且你在计数前特意判断了该字符是否已经统计过,这样能减少一些重复计算,挺细心的 🙂

如果以后遇到数据量更大或者字符种类更多的情况,你觉得有没有可能在只遍历一遍字符串的过程中,就把所有字母的频率都统计好呢?

慢慢来,期待看到你更多的代码分享。
0