Python反转句子后单词间无空格问题求助
问题分析与修复
为什么单词间没有空格?
你的代码存在两个核心问题:
- 分割方式不合理:使用
str1.split(' ')按单个空格分割,若原字符串有多个连续空格、开头/结尾空格,会生成空字符串元素;即使是示例输入,这种分割方式也没解决后续拼接的空格问题。 - 拼接时未添加分隔空格:循环里只是把每个单词直接拼接到
final_str,完全没在单词间插入空格,自然得到连在一起的结果。另外"".join(ss[i])是多余操作,ss[i]本身就是单个单词字符串,join在这里不起作用。
修复方案
方案1:简化写法(推荐)
利用Python内置方法一步完成,简洁且鲁棒性强:
class Solution(object): def reverseWords(self, str1): # split()不带参数时,自动忽略所有空白字符(空格、制表符等),返回非空单词列表 words = str1.split() # 反转单词列表 words.reverse() # 用单个空格拼接所有单词 return ' '.join(words)
方案2:修改原循环逻辑
如果想保留循环写法,调整分割方式并添加空格判断:
class Solution(object): def reverseWords(self, str1): # 用split()代替split(' '),避免生成空字符串 ss = str1.split() final_str = "" for i in range(len(ss)-1, -1, -1): # 若final_str已有内容,先加空格再拼单词 if final_str: final_str += ' ' final_str += ss[i] return final_str
测试验证
用示例输入"the sky is blue"测试,两种方案都会返回"blue is sky the";如果输入包含多余空格(比如" hello world! "),也会正确返回"world! hello",完全符合题目要求。
内容的提问来源于stack exchange,提问作者vilnius19
相关产品推荐
相关产品推荐

