Python中不使用字符串方法计算字符串最后一个单词长度的问题及解决方案
解决字符串末尾带空格时最后一个单词长度的计算问题
嘿,你的思路其实已经很对了,只是没处理字符串末尾存在空格的情况!咱们来一步步修正这个问题:
原代码的问题分析
当字符串末尾有空格(比如"Hello how are you ")时,你反转遍历的第一个字符就是空格,这时候直接触发break,导致last_word是空字符串,最终输出长度0,显然不符合预期——我们需要先跳过末尾所有的空格,再开始统计最后一个单词的长度。
优化后的代码实现
其实不用拼接字符串,直接计数效率更高,而且逻辑更清晰:
string = "Hello how are you " last_word_length = 0 # 从字符串末尾往前遍历 for char in reversed(string): if char == ' ': # 如果还没开始统计单词,就继续跳过空格 if last_word_length == 0: continue # 已经在统计单词时遇到空格,说明单词结束了,停止遍历 else: break else: # 遇到非空格字符,计数加1 last_word_length += 1 print(last_word_length) # 输出:3
逻辑说明
- 初始化
last_word_length为0,用来记录最后一个单词的长度。 - 从字符串的最后一个字符开始反向遍历:
- 如果当前字符是空格,且还没开始统计单词(长度为0),就继续跳过,直到找到第一个非空格字符。
- 一旦遇到非空格字符,就开始累加长度。
- 当累加过程中再次遇到空格,说明已经遍历完最后一个单词,直接跳出循环。
- 最后输出的
last_word_length就是正确的最后一个单词长度。
这个方法完全不需要使用任何字符串方法,完美符合你的需求,不管末尾有多少个空格都能正确处理~
内容的提问来源于stack exchange,提问作者Hemant Sah




