Manacher
SYaoJun
这个作者很懒,什么都没留下…
展开
-
Manecher算法总结
我是从牛客网上学的这个算法,听了一个小时左程云老师讲的课,然后结合网上的代码做的一点笔记和总结。 manecher算法不再区分字符串长度为奇数还是偶数,统一用一个特殊的字符扩充为2n级别的字符串。 例如:121 扩充后:#1#2#1# 按照牛客网左程云老师讲的内容,定义三个变量: ①pArr[]这是个整型数组,初始化为0,用来表示回文半径长度,包括自己 举个例子:#1#2#1# 数字原创 2018-02-05 19:05:57 · 583 阅读 · 0 评论 -
1040. Longest Symmetric String (25)
题目链接:https://www.patest.cn/contests/pat-a-practise/1040 解题思路:manecher算法 这是专门处理回文串的算法,算法笔记上是用动态规划解决的,可能是怕读者暂时不能理解,但是不得不说manecher算法非常的巧妙,时间复杂度只要O(n),而且代码短的可怕,主要是不难,我建议去看看牛客网上左程云老师讲的manecher算法,很容易就听懂了。原创 2018-02-05 18:42:09 · 185 阅读 · 0 评论 -
添加回文串
对于一个字符串,我们想通过添加字符的方式使得新的字符串整体变成回文串,但是只能在原串的结尾添加字符,请返回在结尾添加的最短字符串。 给定原字符串A及它的长度n,请返回添加的字符串。保证原串不是回文串。 测试样例: “ab”,2 返回:“a” 解题思路 还是使用manacher算法 找到第一个扩到边界的字符,填上前面不对称的数据即最短回文串 class Palindrome { public...原创 2019-08-19 10:05:24 · 151 阅读 · 0 评论 -
51nod 1089 最长回文子串 V2(Manacher算法)
题目链接 注意点: 1.读入字符串的时候,最好用getline读入一行,而非cin 2.由于使用manacher算法,字符串长度会被扩充一倍,所以长度最好是题目给定长度的两倍 3.注意更新半径中心 #include<iostream> #include<algorithm> #include<string> using namespace std; const ...原创 2019-08-27 10:29:16 · 94 阅读 · 0 评论 -
5. 最长回文子串
最长回文子串 两种方法 1.分奇偶暴力扩 2.manacher算法 class Solution { public: string longestPalindrome(string s) { string res, ans; res += "$#"; for(auto c : s){ res += c; ...原创 2019-08-31 22:22:28 · 97 阅读 · 0 评论 -
L2-008 最长对称子串 (25 分)
#include<bits/stdc++.h> using namespace std; int main(){ string str,res="$#"; getline(cin,str); //改造字符串 for(int i=0;i<str.size();i++){ res +=str[i]; res +="#"; } //manacher算法 vect...原创 2019-10-05 14:49:34 · 290 阅读 · 0 评论