1. 项目背景与需求解析
华为机考中的"统计大写字母个数"题目,是典型的字符串处理基础题型。这类题目主要考察应聘者对ASCII码的理解、字符串遍历能力以及基础编程逻辑的掌握程度。在实际工作中,类似需求常出现在文本处理、数据清洗、日志分析等场景。
题目要求看似简单,但暗含多个考察点:
- 对字符编码(特别是ASCII码)的熟悉程度
- 字符串遍历的效率考量
- 边界条件的处理能力
- 代码的简洁性与可读性
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术实现方案
2.1 基础实现思路
最直接的实现方式是遍历字符串中的每个字符,判断其是否为大写字母(A-Z)。在Python中可以通过以下方式实现:
python复制def count_uppercase(text):
count = 0
for char in text:
if 'A' <= char <= 'Z':
count += 1
return count
2.2 优化方案对比
| 方案 | 实现方式 | 时间复杂度 | 空间复杂度 | 适用场景 |
|---|---|---|---|---|
| 基础遍历 | 逐个字符判断 | O(n) | O(1) | 通用场景 |
| filter+lambda | 使用filter函数过滤 | O(n) | O(n) | 函数式编程 |
| 列表推导式 | [c for c in s if c.isupper()] | O(n) | O(n) | Pythonic写法 |
| 正则表达式 | re.findall('[A-Z]', s) | O(n) | O(m) | 复杂匹配规则 |
提示:在华为机考环境中,通常更看重代码的正确性和可读性,而非过度优化性能
2.3 边界条件处理
实际编码时需要特别注意以下边界情况:
- 空字符串输入
- 字符串中包含非字母字符
- 全角大写字母(如中文输入法下的大写字母)
- 混合编码的字符串(如UTF-8和GBK混用)
3. 完整实现示例
3.1 Python实现
python复制def count_uppercase_v2(s: str) -> int:
"""
统计字符串中大写字母数量
:param s: 输入字符串
