我需要有效地将输入字符串与大量先前插入的字符串进行匹配,所有字符串的长度均为N。
这个问题通常可以用基数树来解决(示例question here),但是我有一些特殊的属性,我相信这使得该问题与迄今为止所见的有所不同:
_
(没有字符串-存储或输入的字符串只能包含通配符)。例如,a_c
将匹配_bc
,而不匹配__b
。[a-c]
中,而第二个字符可以在[a-z]
中。这是预先知道的,永远不会改变。我当前的解决方案是存储3维向量集,其中第一维对应于字符串中char的位置,另一维对应其值(包括通配符);第三维包含与该特定位置/值匹配的所有ID。为了找到匹配项集,我通过用输入字符串(类似于this proposed solution来查找矩阵)来计算所有ID的set_intersection
。
但是,该解决方案仍然不够快(这是我当前的瓶颈),我想知道是否有办法做得更好。