Como encontrar todas as substrings únicas de uma string muito longa?
Eu tenho uma corda muito longa. Eu quero encontrar todas as substrings exclusivas dessa string. Tentei escrever o código em que usei umconjunto(python) para armazenar todas as substrings para garantir exclusividade. Estou obtendo resultado correto para muitas seqüências médias e grandes, no entanto, no caso de sequências muito grandes, estou recebendo um MemoryError. Pesquisei um pouco e descobri que oconjunto estrutura de dados em python tem uma grande área de cobertura de RAM e talvez seja por isso que estou recebendo um MemoryError.
Aqui está o meu código:
a = set()
for i in range(n):
string = raw_input()
j = 1
while True:
for i in xrange(len(string)-j+1):
a.add(string[i:i+j])
if j==len(string): break
j+=1
print sorted(list(a))
Existe uma maneira de evitar esse erro para cadeias grandes? Ou alguém pode sugerir uma modificação melhor no meu código para lidar com esse problema?
P.S: Não tenho a opção de alternar entre versões de 32 e 64 bits.