[后缀数组]ural1297 Palindrome

来源:互联网 发布:wp8.1软件 编辑:程序博客网 时间:2024/04/30 08:05

声明:虽然我认为这道题很难,以至于我到现在为止还没有打出来(我蒟蒻啊,我懒啊,怪我咯),但我觉得这道题的算法比较有趣,分享给大家

ural1297 Palindrome

一句话题意:给定一个字符串,求最长回文子串。

算法分析:

穷举每一位,然后计算以这个字符为中心的最长回文子串。注意这里要分两种情况,一是回文子串的长度为奇数,二是长度为偶数。两种情况都可以转化为求一个后缀和一个反过来写的后缀的最长公共前缀。具体的做法是:将整个字符串反过来写在原字符串后面,中间用一个特殊的字符隔开。这样就把问题变为了求这个新的字符串的某两个后缀的最长公共前缀。
这个做法的时间复杂度为O(nlogn)。如果RMQ问题用时间为O(n)的方

但是!这道题并不是让我们求最长回文字串的长度,而是让我们输出这个最长回文字串。所以…就像前面的声明所说的。如果有同(大)学(神)做出来了,欢迎分享与评论!

0 0
原创粉丝点击