我想做某种“搜索和替换”算法,如果可能的话,它会以一种有效的方式识别一个字符串的子字符串,它出现了不止一次,并用一个标记替换该子字符串的所有出现。
例如,给定一个字符串“AbcAdAefgAbijkAblmnAbAb”,注意“A”重复出现,所以在第一个过程中减少到“#1bc#1d#1efg#1bijk#1blmn#1b#1b”,其中#_是一个索引模式(我们注意到索引表中的模式),然后注意“#1b”重复出现,因此减少为“#2c#1d#1efg#2ijk#2lmn#2#2”。字符串中不再出现模式,所以我们完成了。
我找到了一些关于“最长公共子序列”和压缩算法的信息,但似乎没有这样做。它们要么用于比较两个字符串,要么用于获得某种存储优化的结果。
另一方面,我的目标是将基因组简化为“单词”而不是“字母”。即,我想看到 2c1c2c 而不是 gatcatcgatc。之后我可以做一些正则表达式来找到像 "#42*#42"; 这样的东西。在 dna 中看到重复出现的括号会很酷。
如果我能在网上找到它,我会跳过自己做的,但我看不到这个问题以前用我能发现的术语回答。对于任何可以指出我正确方向的人,非常感谢。