D 如何检查数组中的任何元素是否在另一个数组中?

D 如何检查数组中的任何元素是否在另一个数组中?,d,D,我得到了字符串aabbccddffgg我需要检查它是否有数组中的最后一个元素:[“bb”,“cc”] 在D中执行此操作的最佳方法是什么?find和canFind支持不同数量的针,因此使用它们是最简单的: “aabbccddffgg”。可以找到(“bb”、“cc”); 了解更多关于。 如果您不知道编译时的针数,这取决于您对字符串的了解程度,但最简单的方法是在字符串上循环多次: autoeles=[“bb”,“cc”]; 埃利斯,任何人!(e=>aabbccddffgg.canFind(e)))

我得到了字符串
aabbccddffgg
我需要检查它是否有数组中的最后一个元素:
[“bb”,“cc”]


在D中执行此操作的最佳方法是什么?

find
canFind
支持不同数量的针,因此使用它们是最简单的:

“aabbccddffgg”。可以找到(“bb”、“cc”);
了解更多关于。 如果您不知道编译时的针数,这取决于您对字符串的了解程度,但最简单的方法是在字符串上循环多次:

autoeles=[“bb”,“cc”];
埃利斯,任何人!(e=>aabbccddffgg.canFind(e)))
如果您对子元素了解得更多,就有更好的方法。 例如,如果您知道所有针的长度均为n,则可以创建一个大小为n的滑动窗口,并检查针是否出现在其中一个滑动窗口中:

autoeles=[“bb”,“cc”];
“aabbccddffgg”。幻灯片(2)。可以找到!(e=>eles.canFind!equal(e));
了解更多关于。 同样的想法也适用于一般情况:

autoeles=[“bb”,“cc”];
字符串s=“aabbccddffgg”;
s、 列举
.地图!(e=>s.drop(e.index))
.我能找到!(e=>eles.canFind!(reverseArgs!startsWith)(e));
请注意,
drop
使用切片,并且在没有任何内存分配的情况下在O(1)中延迟进行


当然,还有一些更高效的方法可以使用更高级的字符串匹配算法。

请发布您尝试过的代码