我想在hackerrank.com代碼這個問題:Python字典內存用完
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"
btw嘗試使用'set_of_subwords = set()'而不是'dict_of_subwords = {}'。 – 9000 2013-03-18 17:30:43
我應該說,我也嘗試過套餐,並且得到相同的錯誤。 – Chris 2013-03-18 17:33:21
到目前爲止,我沒有重現它;問題中最大的'n'是50,所以我試圖用50個隨機的50個字符的字符串來提供算法,沒有任何不良影響。請發佈確切的錯誤消息。此外,嘗試在另一行計算'x [i:j + 1]',以確保它是導致問題的'dict_of_subwords'訪問。 – 9000 2013-03-18 17:44:26