https://leetcode.com/problems/longest-palindromic-substring/

manacher算法相关:http://blog.csdn.net/ywhorizen/article/details/6629268

class Solution {
public: string longestPalindrome(string s)
{
char ch[2001];int p[2001];
ch[2*s.size()] = 0;
for(int i = 0; i < 2 * s.size(); i++)
{
if((i & 1) == 1)ch[i] = s[(i>>1)];
else ch[i] = ' ';
}
int mx = 1,id = 0;
p[0] = 1;
int ss = 0,se = 0;
for(int i = 1; ch[i]; i++)
{
if(mx <= i)
{
p[i] = 1;
}
else
{
p[i] = min(p[id * 2 - i],mx - i);
}
while(ch[i + p[i]] == ch[i - p[i]] && i >= p[i])
{
p[i]++;
}
if(p[i] + i > mx)
{
id = i;
mx = p[i] + i;
}
int ts = (i - p[i] + 1)/2;
int te = (i + p[i] - 2)/2;
if(te - ts >se - ss){
se = te;ss = ts;
}
}
return s.substr(ss,se -ss + 1);
}
};

  

LeetCode 5 Longest Palindromic Substring manacher算法,最长回文子序列,string.substr(start,len) 难度:2的更多相关文章

  1. leetcode 5 :Longest Palindromic Substring 找出最长回文子串

    题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...

  2. leetcode:Longest Palindromic Substring(求最大的回文字符串)

    Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...

  3. leetcode 5 Longest Palindromic Substring(Manacher算法求最长回文串)

    应用一下manacher算法就可以O(n)求出结果了.可以参考hdu3068 substr(start,length)函数是这样用的: substr 方法 返回一个从指定位置开始,并具有指定长度的子字 ...

  4. Manacher算法----最长回文子串

    题目描述 给定一个字符串,求它的最长回文子串的长度. 分析与解法 最容易想到的办法是枚举所有的子串,分别判断其是否为回文.这个思路初看起来是正确的,但却做了很多无用功,如果一个长的子串包含另一个短一些 ...

  5. Manacher算法——最长回文子串

    一.相关介绍 最长回文子串 s="abcd", 最长回文长度为 1,即a或b或c或d s="ababa", 最长回文长度为 5,即ababa s="a ...

  6. Manacher算法,最长回文串

    给你10000长度字符串,然你求最长回文字串,输出长度,暴力算法肯定超时 #include <iostream> #include <string> #include < ...

  7. 最长回文子串-LeetCode 5 Longest Palindromic Substring

    题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  8. LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法

    LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...

  9. Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)

    Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...

随机推荐

  1. smarty模板引擎

    1.    使用smarty 1.1 项目引入 // 3, 连接数据库,提取相关数据 $title = "Smarty模板引擎"; $content = "Smarty模 ...

  2. getFragmentManager()和getSupportFragmentManager()

    在Android开发中,少不了Fragment的运用.目前在实际运用中,有v-4包下支持的Fragment以及app包下的Fragment,这两个包下的FragmentManager获取方式有点区别, ...

  3. C# API项目代码正确 ,页面出不来的问题

    C# API项目代码正确  页面出不来的问题,截图如下: 解决方法: 在项目里设置好[起始页],就可以了.

  4. php的socket通信

    socket通常叫做'套接字',用于描述IP地址和端口,是一个通信链的句柄.应用程序通过套接字向网络发出请求或者应答忘了请求.socket既不是程序,也不是协议,其只是操作系统提供的通信层的一组抽象A ...

  5. caffe python 接口设置

    安装编译完成后, 运行 cd sudogedit  ~/.bashrc 在打开的文件末尾加入 export PYTHONPATH=/home/caffe-master/python:$PYTHONPA ...

  6. 把数据输出到Word (组件形式)

    上一篇的文章中我们介绍了在不使用第三方组件的方式,多种数据输出出到 word的方式,最后我们也提到了不使用组件的弊端,就是复杂的word我们要提前设置模板.编码不易控制.循环输出数据更是难以控制.接下 ...

  7. 使用react做的聊天对话列表

    刚刚接触react   可能写的地方有错误或者不完善的地方欢迎大家给指正 下面开始正题 首先分析页面基于react的特性--把页面中所有显示内容看做模块加载 本页面可以看做一个大的模块,我们暂且命名为 ...

  8. ORA-28001: the password has expired (DBD ERROR: OCISessionBegin) EM无法登录

    先发句牢骚,明明刚才写完了,发布的时候却说没登陆,一下子全没了. 今天打开EM发现提示 ORA-28001: the password has expired (DBD ERROR: OCISessi ...

  9. 一次java性能调优总结

    我们的系统中新开发了一个数据抽取的功能,东西做完后,一看执行时间那叫一个恼火.参考同类系统同样功能的执行时间,目标:将本地数据处理时间压缩到5秒以内.   第一步: 要想知道哪个地方需要优化,仅凭感觉 ...

  10. angularjs的$on、$emit、$broadcast

    如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你 ...