题目概述
解题思路
题目要求把字符串按照长度重新排序,我们只需遍历一遍字符串,简历一个map记录每个长度对应的串的先后顺序,然后把字符串重新拼起来即可。
方法性能
如果map开得够大,可以到O(n)的时间复杂度;否则我们需要对字符串的长度进行排序,复杂度可以达到O(n log(n))。
示例代码
class Solution(object):
def arrangeWords(self, text):
"""
:type text: str
:rtype: str
"""
str_list = text.split(' ')
str_list[0] = lower(str_list[0])
idx_map = {}
len_set = set()
for s_i in str_list:
tmp_len = len(s_i)
len_set.add(tmp_len)
if idx_map.get(tmp_len, None) == None:
idx_map[tmp_len] = [s_i]
else:
idx_map[tmp_len].append(s_i)
len_set = sorted(len_set)
res_list = []
for l_s in len_set:
tmp_list = idx_map[l_s]
res_list.extend(tmp_list)
res_list[0] = upper(res_list[0][0]) + res_list[0][1:]
return ' '.join(res_list)