首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无动态规划或后缀树的最长公共子串

无动态规划或后缀树的最长公共子串
EN

Stack Overflow用户
提问于 2017-12-23 07:58:21
回答 1查看 450关注 0票数 1

Skiena的算法设计手册问题8-3 b部分要求给出一个“更简单”的BigO(nm)算法,用于寻找不依赖于动态编程的最长公共子字符串。显而易见的答案似乎是使用后缀树,然而,Skiena使用了“更简单”这个词,我不确定后缀树是否比DP更简单,也许搜索更简单,但在nm时间复杂度内构建后缀树一点也不简单。所以,我想知道,有没有其他方法可以在O(nm)时间内解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-23 08:11:56

假设我们固定了第一个(较短)字符串s中的起始位置i。现在让我们在更长的字符串中找到它可能最长的前缀。这可以在O(n + m)中通过检查字符串s[i:] + # + tprefix function(或z function)来完成,其中#是在任何st中都不存在的特殊符号。

总体复杂度为O(n(n + m)),当nO(nm)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47948615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档