假设我有一串数字,连字符代表一个空格,定义
string, A := 1212-241321413-21341-3
我有一组我感兴趣的已知数字,
group, G := ( 1, 2)
这意味着我不在乎顺序,12 或 21。我只想知道,是否有一种算法可以找到所有子字符串及其起始位置,无论多长,仅包含 1 和 2(子字符串必须包含 1和 2 并且没有相邻的重复,即你永远不会看到 22 或 11 )
这意味着如果我用字符串 A 和组 G 运行算法,我会得到类似
>> substringfind(A, G)
>>
>> { 1212 : [0], 21 : [9, 15] }
如果算法返回一个字典,其中键作为子字符串,键值作为字符串中起始位置的列表。
另一个例子是
group H := (1, 3, 4)
算法会产生
>> substringfind(A, H)
>>
>> { 413 : [7], 1413 : [11], 1341 : [16] }