string - 字符串中模式的符号表示,并找到 "similar"子模式

标签 string algorithm data-structures pattern-matching

字符串“abab”可以被认为是索引符号“0101”的模式。字符串“bcbc”也将由“0101”表示。这非常漂亮,可以进行有力的比较,但它很快就会脱离完美的案例。

“babcbc”将是“010202”。如果我想注意到它包含一个等于“0101”的模式(bcbc 部分),我只能想到在每个索引处进行某种规范化处理以象征性地“重新表示”从 n 到 length 的子字符串以进行比较.如果我试图查看“babcbc”和“dababd”(010202 与 012120)是否有任何共同点,事情就会变得复杂。效率太低了!

如何有效地处理所有可能的嵌套情况?请注意,我正在寻找相似的模式,而不是实际文本中的相似子字符串。

最佳答案

尝试用 min(K,距离该字符之前出现的距离)替换每个字符,其中 K 是一个可调常数,因此 babcbc 和 dababd 变成类似 KK2K22 和 KKK225 的东西。您可以使用后缀树或后缀数组在转换后的文本中查找重复项。

关于string - 字符串中模式的符号表示,并找到 "similar"子模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12374259/

相关文章:

arrays - 拆分数组元素行并合并为一行

c++ - SPOJ上通过TLE的代码优化建议

java - 静态和动态数据结构之间的差异

algorithm - 将不平衡树转换为生成树

java - 将 textView 转换为 Boolean 以避免类型 Intent 中的 : The method putExtra(String, boolean) 不适用于参数

python查找文件中正则表达式匹配次数最多的部分

c++ - 如何删除句子开头的空格。

c - 具有大序列的程序错误 (C)

python - 递归二叉搜索树插入

c# - 存储和引用数百个值的有效方法是什么?