小编roc*_*ock的帖子

从字符串中查找子字符串

输入:字符串S = AAGATATGATAGGAT.

输出:最大重复次数,如GATA(如位置3和8),GAT(如位置3,8和13)等等......

  • 最大重复是子串t在S中发生k> 1次,并且如果t向左或向右延伸,则它将发生少于k次.

  • 内部节点的叶子后代是后缀,每个后缀都有一个左侧字符.

  • 如果所有叶子后代的左侧字符都不完全相同,则称为"左侧多样化"节点.

  • 最大重复是左 - 多样的内部节点.

总体思路:

  • 构建后缀树,然后在树上执行DFS(深度优先搜索)

  • 对于每个叶子,用左侧字符标记它

  • 对于每个内部节点:

  • 如果至少有一个孩子标有*,则用*标记*

  • 否则,如果其子标签不同,请标注*.

  • 否则,所有孩子都有相同的标签,将其复制到当前节点

上述想法是否正确?伪代码怎么样?然后我可以尝试自己编写程序.

language-agnostic algorithm suffix-tree

8
推荐指数
1
解决办法
1358
查看次数

标签 统计

algorithm ×1

language-agnostic ×1

suffix-tree ×1