Мне нужна структура данных в Ruby, которая будет хранить строку только один раз и отклонять ее в следующий раз, когда я попытаюсь вставить ее (что-то вроде 'SET').
Реализация должна быть наиболее эффективной (например, лучше, чем линейный поиск в массиве).
Также я попытался использовать Hash для этой цели, но несколько строк с одинаковым значением (эти строки, которые я получаю из операции среза для некоторых существующих строк) попадают в Hash, похоже, что для них вычисляется другое значение хеш-функции.
Что может быть лучшим и наиболее эффективным выходом? Я не хотел бы использовать рубиновый драгоценный камень. Я работаю над решением головоломки от интернет-судьи, для которого я могу предоставить только свой собственный код.
Вот фрагмент кода, который я написал:
for string in @string_store do
for c in 0...string.length
index_to_sum=0
while c+index_to_sum<string.length do
substring=string[c..(c+index_to_sum)]
unless @hash_store[substring]=='X'
@hash_store[substring]='X'
end
index_to_sum+=1
end
end
end