HackerRank护照姓名首字母大写题代码4/6测试用例未通过求助
问题分析
原有代码的核心问题
- 空格格式丢失:
str.split()无参数调用时会将连续多个空白字符视为单个分隔符,同时自动忽略字符串首尾的空白,会直接丢失原输入的连续空格、首尾空格等格式,这是触发测试用例失败的主要原因。 - 冗余无效代码:
0<len(s)<1000是无逻辑绑定的布尔表达式,既没有做长度校验的分支处理,也没有赋值操作,对程序运行没有任何作用,属于冗余代码。 - 不必要的重复操作:字符串拼接逻辑
x=" ".join(abc)放在for循环内部,每遍历一个单词就执行一次全量拼接,无意义消耗性能。
修复方案
将无参数的split()改为按单个空格分割的split(' '),即可完整保留原字符串的所有空格格式,同时调整拼接逻辑的位置、删除冗余代码即可。
修复后代码(和原实现风格对齐)
def solve(s): abc = [] for p in s.split(' '): abc.append(p.capitalize()) x = " ".join(abc) return x
更简洁的优化写法
def solve(s): return ' '.join(p.capitalize() for p in s.split(' '))
验证效果
| 输入样例 | 输出结果 | 是否符合要求 |
|---|---|---|
alison heck | Alison Heck | 是 |
alison heck | Alison Heck | 是(保留所有原空格) |
a | A | 是 |
123test name | 123test Name | 是 |
内容的提问来源于stack exchange,提问作者wes BOREland
相关产品推荐
相关产品推荐

