归并排序按长度排字符串,HackerEarth题目输出不符求助
解决归并排序输出开头多空格的问题
我来帮你搞定这个小问题!你提到归并排序本身能生成预期的字符串列表,但输出开头多了空格导致和题目要求不符,咱们来一步步排查:
首先,先修正代码里的一个小语法问题:你最后一行的代码少了一个闭合括号,正确写法应该是:
print(' '.join(mergesort(a[i])))
如果是Python 2环境,也可以去掉外层括号直接写print ' '.join(mergesort(a[i])),这个语法问题虽不一定直接导致空格,但先修正能避免其他意外。
接下来排查核心问题:既然你确认归并排序返回的列表是预期的,那输出开头多空格最可能的原因是排序后的列表里不小心混入了空字符串。比如mergesort(a[i])返回的是类似["", "apple", "banana"]这样的列表,用' '.join()连接后就会变成" apple banana",自然开头多了空格。
对应的解决步骤:
- 先加一行调试代码确认列表内容:在打印前添加
print(mergesort(a[i])),看看列表开头是不是真的存在空字符串。 - 如果确实有空字符串,检查你的
mergesort函数逻辑:比如在分割或合并步骤中,有没有不小心把空元素加进去?比如初始化临时列表时是否误加了空值,或者处理边界条件时引入了空字符串。 - 临时补救的话,可以在排序后过滤掉空元素:
sorted_list = mergesort(a[i]) filtered_list = [item for item in sorted_list if item.strip()] print(' '.join(filtered_list))
另外补充一点:如果题目要求的是对字符串的字符进行排序(而非对单词排序),那你不应该用split(),而是直接把字符串转成字符列表处理,比如list(raw_input()),排序后再用''.join()拼接,但你说排序得到了预期的列表,这个可能性应该可以排除。
内容的提问来源于stack exchange,提问作者ps3790
相关产品推荐
相关产品推荐

