【发布时间】:2017-02-19 03:12:03
【问题描述】:
我有 2 个字符串数组,数组 #1 包含大约 250 万个字符串,数组 #2 包含大约 450 万个字符串。我需要检查数组 #2 中的字符串是否在数组 #1 的字符串中,然后删除它们。
由于“字符串包含另一个字符串”的要求,我不能使用任何二进制搜索等,并且该过程目前需要 30 多个小时。
“字符串包含另一个字符串”的意思是,例如,数组 #1 包含字符串“船屋”,数组 #2 包含某个地方“房子”,所以“房子”在“船屋”中,这意味着我将拥有从数组 #1 中删除“船屋”。
示例(不是实际的,也不起作用)代码来更好地解释它:
for i:=0 to length(array1)-1 do
begin
for j:=0 to length(array2)-1 do
begin
if ansicontainstext(array1[i],array2[j]) then
begin
martrecordtoremove;
break;
end;
end;
end;
所有字符串大约需要 30 小时。
所以我的问题是,有什么方法可以更快地做到这一点?
【问题讨论】:
-
那么你的问题是什么?
标签: arrays string delphi search