私はhackerrank.comでこの問題をコーディングしようとしています:
https://www.hackerrank.com/challenges/find-strings
私のコードは小さなケースではうまく動作しますが、大きなケースでは辞書のメモリがすぐに不足します。これを解決するにはどうすればよいですか?リストを使用したくないのは、エントリがすでに存在するかどうかを確認するのに時間がかかりすぎるためです...私のコードは次のとおりです。
n = int(raw_input())
words = []
for x in range(n):
words.append(raw_input())
test = int(raw_input())
queries = []
for x in range(test):
queries.append(raw_input())
dict_of_subwords = {}
for x in words:
len_of_x = len(x)
for i in range(len_of_x):
for j in range(i, len_of_x):
dict_of_subwords[x[i:j+1]] = 1
list_of_subwords = dict_of_subwords.keys()
list_of_subwords.sort()
for x in queries:
try:
print list_of_subwords[int(x)-1]
except:
print "INVALID"