我试图找到 2 个字符串之间的所有形式的插入。所以我有一个包含 1400 万个字符串的列表,然后我必须检查每个字符串有哪些可能的插入可以将一个字符串转换为另一个字符串(基本上计算插入频率)。假设 x 是一个字符串,y 是另一个字符串,其中 x 是 y 的子字符串,所以我们必须找出哪些插入将 x 转换为 y。
我正在使用以下代码段。它有效,但需要很多时间。我什至尝试将负载分布在 64 个处理器上,但仍需要 20 天才能完成。
for i in Words:
#trying to distribute load across different processes, so can ignore this part
h = hashlib.sha256(i)
n = int(h.hexdigest(),base=16)
if (n%64!=ix): #ix is a process based id
continue
for j in Words:#
if len(i)>len(j):
continue
if( i!=j and i in j): # i is a substring of j
ind=j.find(i)
s1=j[0:ind]
s2=j[ind+len(i):len(j)]
if(len(s1)>0):
if (not transform.has_key(s1)):
transform[s1]=1
else:
transform[s1]+=1
if(len(s2)>0):
if (not transform.has_key(s2)):
transform[s2]=1
else:
transform[s2]+=1