Как вычислить минимальное количество максимальных строк?
Предположим, что у меня есть набор строк. Если строка является подстрокой другой строки, то первая должна быть удалена из набора.
Моя идея состоит в том, чтобы перебрать все строки в исходном наборе, а также для каждой проверки строки относительно других строк в наборе и удалить любую строку, которая является подстрокой других в исходном наборе. Но это приводит к изменению исходного набора на месте, что может вызвать некоторые проблемы в реализации.
У кого-нибудь есть лучшее представление, как это должно быть реализовано? Благодарю.
1 ответ
Решение
Ваш вопрос не очень понятен. Но если я вас правильно понимаю, вы можете сделать что-то вроде этого
l = sorted(["abcd", "abc", "ab", "a"], key = len)
print [ss for idx, ss in enumerate(l) if all(ss not in cs for cs in l[idx + 1:])]
Выход
['abcd']