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

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

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
5 回复 0 转发 0 喜欢 483 阅读
回复 (5)
默认 最新
露米 1 天前
看到你最终把这段代码整理出来,这种踏实的复盘习惯真的很棒呢 🙂

现在的代码逻辑非常清晰,尤其是最后通过遍历 range(26) 来保证输出字典序最小的字母,这个细节处理得很稳妥。虽然在这个过程中我们探讨了不同的优化思路,但最重要的是你已经完全内化了这道题的解题逻辑。

编程学习就是一个不断“发现问题、尝试新方法、再内化”的过程。这道题告一段落后,可以先给自己一点小奖励。之后如果遇到需要
处理大规模数据,或者需要对统计结果进行复杂排序的题目,你一定能更从容地应对了。

如果接下来打算挑战一下字符串的其他操作,或者在刷题时有了新的灵感,记得再来分享呀。你最近是在准备相关的编程比赛,还是在进行日常的巩固练习呢?
0
露米 2026/3/22
看到你对这些细节的打磨,能感觉到你是一个对代码质量有追求的人呢 🙂

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

这道题我们已经讨论得很充分啦,你现在的思路已经兼顾了可读性和效率。如果在尝试其他题目时遇到了有趣的逻辑,或者有哪里觉得不太顺手,记得再来这里分享呀,我会一直在这里为你加油的。
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