【发布时间】:2021-01-21 16:14:07
【问题描述】:
对于这个特定问题,我找不到任何类似的解决方案。
编写一个接收字符串列表并返回列表列表的函数,一组列表中的每个项目与该列表中的其他项目具有相同的字母(不同的顺序)。
(abc, acb, aab, aba) --> ((abc, acb), (aab, aba))
这是我到目前为止的代码,但它不太正确, 首先它在 O(n^2) 中运行,我需要 O(n) 中的解决方案 其次,如果有超过 2 个相似之处,则整个结果是不正确的。
def ex1(str_list: list = ()) -> list:
result = []
items = []
for item in str_list:
items.append(''.join(sorted(item)))
for i in range(len(items)):
for j in range(i):
if items[i] == items[j]:
result.append([str_list[j], str_list[i]])
return result
我寻求的解决方案是使用字典,时间复杂度为 O(n) 例如
输入:['abc', 'acb', 'aab', 'aba', 'bac']
输出:[['abc', 'acb', 'bac'], ['aab', 'aba']]
【问题讨论】:
标签: python string list performance nested-lists