Есть список строк, например ["ab c", "ab", "ad", "cde", "cde", "de", "def"]. Я бы хотел, чтобы вывод был ["ab c", "ad", "cde", "def"]
"ab" было удалено, поскольку это подстрока "ab c", "cde" было удалено, поскольку Подстрока другого "cde" "de" была удалена, потому что это подстрока "def"
Какой самый быстрый алгоритм?
У меня есть метод грубой силы, который O (n ^ 2) следующим образом:
def keep_long_str(str_list):
str_list.sort(key = lambda x: -len(x))
cleaned_str_list = []
for element in str_list:
element = element.lower()
keep_element = 1
for cleaned_element in cleaned_str_list:
if element in cleaned_element:
keep_element = 0
break
else:
keep_element = 1
if keep_element:
cleaned_str_list.append(element)
return cleaned_str_list