Как вычислить минимальное количество максимальных строк?

Предположим, что у меня есть набор строк. Если строка является подстрокой другой строки, то первая должна быть удалена из набора.

Моя идея состоит в том, чтобы перебрать все строки в исходном наборе, а также для каждой проверки строки относительно других строк в наборе и удалить любую строку, которая является подстрокой других в исходном наборе. Но это приводит к изменению исходного набора на месте, что может вызвать некоторые проблемы в реализации.

У кого-нибудь есть лучшее представление, как это должно быть реализовано? Благодарю.

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']
Другие вопросы по тегам