1. 洛谷P1125题目解析与Python实现洛谷作为国内知名的在线编程题库平台P1125是其基础题库中的一道经典题目。这道题主要考察编程者对字符串处理、基础算法和边界条件处理的掌握程度。我们先来看题目要求题目给定一个全大写字母组成的单词长度不超过100要求计算该单词的幸运值首先统计每个字母出现的次数找出出现次数最多和最少字母的差值然后判断这个差值是否为质数。如果是质数则输出Lucky Word和该质数否则输出No Answer和0。2. 解题思路分析2.1 问题拆解这道题可以分解为以下几个子任务统计每个字母的出现频率找出最大和最小出现次数计算两者差值判断差值是否为质数根据判断结果输出相应信息2.2 算法选择对于统计字母频率Python中最简单的方式是使用collections模块的Counter类。质数判断则可以采用试除法考虑到题目限制差值最大可能为100当某个字母出现100次其他字母出现0次所以试除法的效率完全足够。3. Python实现详解3.1 完整代码实现from collections import Counter import math def is_prime(n): if n 2: return False for i in range(2, int(math.sqrt(n)) 1): if n % i 0: return False return True word input().strip() counter Counter(word) counts counter.values() max_count max(counts) min_count min(counts) diff max_count - min_count if is_prime(diff): print(Lucky Word) print(diff) else: print(No Answer) print(0)3.2 关键代码解析Counter类来自collections模块可以快速统计可迭代对象中各元素的出现次数is_prime函数实现质数判断的核心逻辑小于2的数不是质数只需检查2到√n之间的整数是否能整除n输入处理使用strip()去除可能的空白字符极值计算max()和min()函数直接获取出现次数的最大值和最小值4. 优化与注意事项4.1 性能优化点质数判断优化可以预先生成质数表但本题范围小优化效果有限边界条件处理当输入为空字符串时counts为空max/min会报错需要额外处理4.2 常见错误未考虑所有字母出现次数相同的情况差值为0质数判断时漏掉1和0的特殊情况输入处理时未去除空白字符导致统计错误4.3 改进版代码from collections import Counter import math def is_prime(n): if n 2: return False for i in range(2, int(math.sqrt(n)) 1): if n % i 0: return False return True word input().strip() if not word: # 处理空输入 print(No Answer) print(0) else: counter Counter(word) counts list(counter.values()) max_count max(counts) min_count min(counts) diff max_count - min_count if is_prime(diff): print(Lucky Word) print(diff) else: print(No Answer) print(0)5. 测试用例设计5.1 常规测试用例输入AAAABBBCC → 输出Lucky Word 2 (4-222是质数)输入ABCDEF → 输出No Answer 0 (所有字母出现1次1-10)输入ZZZZZ → 输出No Answer 0 (5-05但题目要求字母必须全大写)5.2 边界测试用例空输入应输出No Answer 0单个字母A → 输出No Answer 0 (1-10)最大长度输入(100个相同字母)A*100 → 输出No Answer 0 (100-0100非质数)6. 算法复杂度分析Counter统计O(n)n为字符串长度求最大值和最小值O(m)m为不同字母的数量(最多26)质数判断O(√k)k为差值 综合复杂度为O(n)完全满足题目要求7. 类似题目推荐洛谷P1308统计单词出现次数洛谷P1055ISBN号码校验洛谷P1598垂直柱状图洛谷P1553数字反转升级版这些题目都涉及到字符串处理和基础算法的应用适合用来巩固相关知识。