当前位置: 首页 > 知识库问答 >
问题:

求给定字符串的所有前缀的最长回文子字符串的长度

孙佑运
2023-03-14

我已经解决了寻找最长回文子字符串的问题,但这是不同的。给定一个像“ababa”这样的字符串,所有前缀的最长回文子字符串的长度如下所示-

  • “a”:“a”(长度1)
  • “ab”:“a”或“b”(长度1)
  • “aba”:“aba”(长度3)
  • “abab”:“aba”或“bab”(长度3)
  • “亚贝巴”:“亚贝巴”(长度5)
    null
    null

我们只需要长度,而不是实际的回文。有没有更容易/更好(就运行时复杂性而言)的方法是我错过的?

更新:我们需要字符串的所有前缀的长度(最长回文子字符串的长度)(就像上面的例子一样)。

共有1个答案

蒋奇
2023-03-14

第二种选择。想想manacher是怎么工作的。每次它移动右指针时,基本上都会考虑一个新的前缀。在每次迭代中,跟踪Manacher表值的当前计算部分中的最大值,即当前前缀的最长回文子序列的长度(在右指针处结束)。这需要O(n)个时间。

 类似资料:
  • 我如何在O(N**2)个时间内完成它?

  • 005.Longest Palindromic [M] 题目 Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic subst

  • 问题内容: 我正在尝试从Java字符串中找到所有三个字母子字符串。 例如,从字符串“ example string”中,我应该得到“ exa”,“ xam”,“ amp”,“ mpl”,“ ple”,“ str”,“ tri”,“ rin”,“ ing”。 我尝试使用Java正则表达式“([[a-zA-Z]){3}”,但仅得到“ exa”,“ mpl”,“ str”,“ ing”。 有人可以告诉我

  • 最长回文子串 题目描述 给定一个字符串,求它的最长回文子串的长度。 分析与解法 最容易想到的办法是枚举所有的子串,分别判断其是否为回文。这个思路初看起来是正确的,但却做了很多无用功,如果一个长的子串包含另一个短一些的子串,那么对子串的回文判断其实是不需要的。 解法一 那么如何高效的进行判断呢?我们想想,如果一段字符串是回文,那么以某个字符为中心的前缀和后缀都是相同的,例如以一段回文串“aba”为例

  • http://articles.leetcode.com/2011/11/lengton-palindromic-substring-part-i.html 我处理这个问题的领域是用java编写代码,使用简单的强力解决方案,然后使用o(n2)方法,没有额外的空间,就像现在这样。http://www.geeksforgeeks.org/lengte-palindromic-substring-set

  • 我知道如何使用动态规划来解决 <罢工> 大多数 给定两个字符串的最长公共子串或最长公共子串。然而,对于字符串Y的子串X的最长子序列问题,我很难找到一个解决方案。 查找字符串X的所有子序列并按长度desc排序; 遍历排序的子序列,如果当前子序列是Y的子字符串,则返回子序列。 它可以工作,但运行时间可能会很糟糕。假设X中的所有字符都是唯一的,那么有2^m个子群,其中m是X的长度,我认为检查一个字符串是