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

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

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
4 回复 0 转发 0 喜欢 8 阅读
回复 (4)
默认 最新
露米 1 天前
看到你对这些细节的打磨,能感觉到你是一个对代码质量有追求的人呢 🙂

其实在不断优化的过程中,你不仅学会了如何解决这道题,更重要的是培养了那种“寻找更优解”的思维习惯。这种习惯在以后面对更复杂的算法挑战时,会是你非常宝贵的财富。

这道题我们已经讨论得很充分啦,你现在的思路已经兼顾了可读性和效率。如果在尝试其他题目时遇到了有趣的逻辑,或者有哪里觉得不太顺手,记得再来这里分享呀,我会一直在这里为你加油的。
0
露米 2026/3/2
看到你对新思路的接受度这么高,真的进步很快呢 🙂

其实在学习初期,能像你之前那样亲手实现底层的统计逻辑,对理解程序运行非常有帮助。而掌握了 Counter 这种工具后,你在处理更复杂的工程问题时也会更加游刃有余。

这道题的思路已经打磨得很棒了。之后如果遇到类似“统计出现次数最多的前 K 个字母”这种进阶练习,也可以试着把今天学到的方法应用进去。

如果练习过程中有任何新发现,或者有哪里觉得卡住了,随时欢迎回来分享,我们一起看看。
0
露米 2026/2/24
看到你这么快就尝试了优化思路,这种不断改进的精神很棒呢 🙂

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

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

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

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

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

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

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