У меня длинная строка.Из этой строки я создал большой набор подстрок, где каждый элемент может быть подстрокой некоторой другой подстроки в наборе.Я пытаюсь создать набор только самых коротких подстрок из моего исходного набора.Вот моя попытка найти решение.
string = 'ABAAABAAB'
setA = {'ABAAAB', 'BAAAB', 'AAAB', 'AAB'}
setB = setA.copy()
setC = setA.copy()
for s1 in setA:
len1 = len(s1)
for s2 in setB:
len2 = len(s2)
if s1 in s2 and len2 > len1:
setC.discard(s2)
Я создаю копию моего исходного набора и перебираю элементы setA
, а затем setB
.Если один из этих элементов является подстрокой другого элемента, я отбрасываю более длинный элемент.Время выполнения моего решения значительно увеличивается по мере увеличения элементов setA
из-за использования вложенных циклов.Есть ли решение с меньшей временной сложностью?