1. 问题背景与需求拆解
这道编程题源自经典的字母与数字映射问题,考察的是字符串处理、字符编码转换和条件判断等基础编程能力。题目要求将英文字母A-Z(大小写均可)对应到数字1-26,非字母字符对应0,然后计算整个字符串的数字之和。以"Attitude"为例,其计算结果应为100。
这类问题在实际开发中有着广泛的应用场景:
- 密码学中的简单加密算法
- 游戏开发中的字母计分系统
- 数据处理时的字符特征提取
- 教育类应用中的单词计算功能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心算法设计思路
2.1 字符与数字的映射关系
关键在于建立字母到数字的正确映射关系。根据ASCII码表:
- 大写字母A-Z的ASCII码范围是65-90
- 小写字母a-z的ASCII码范围是97-122
- 数字转换公式:
- 大写字母:ord(char) - 64
- 小写字母:ord(char) - 96
- 非字母字符:0
2.2 计算流程设计
完整的计算流程应包括以下步骤:
- 初始化总和变量为0
- 遍历字符串中的每个字符
- 对每个字符判断其类型:
- 如果是大写字母,计算其对应数字并累加
- 如果是小写字母,计算其对应数字并累加
- 其他字符则跳过(加0)
- 返回最终累加结果
3. 代码实现与优化
3.1 Python基础实现
python复制def calculate_word_sum(word):
total = 0
for char in word:
if 'A' <= char <= 'Z':
total += ord(char) - ord('A') + 1
elif 'a' <= char <= 'z':
total += ord(char) - ord('a') + 1
return total
# 测试用例
print(calculate_word_sum("Attitude")) # 输出: 100
print(calculate_word_sum("Hello123!")) # 输出: 52
3.2 性能优化版本
对于大规模字符串处理,可以考虑以下优化:
