博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 5. Longest Palindromic Substring
阅读量:6214 次
发布时间:2019-06-21

本文共 1129 字,大约阅读时间需要 3 分钟。

class Solution {public:    const int maxn=5000;    string longestPalindrome(string s) {        /*        回文串        马拉车算法        先隔着填充#,这样只需要考虑奇数长度的回文串就可以                P[k]:第k个字符为中心的回文串的一半长度(/2)        idx_M,用到最大坐标的回文串的中心位置.        最大坐标mx=idx_M+P[idx_M]        求P[k]时:        若k>mx,则k_r=k;        否则:            k相对idx_M的对偶坐标k_dual=2*idx_M-k,            k_r=min(k+P[k_dual],mx)        可以保证以k为中心,右边延伸到k_r时,仍为回文串        之后继续延伸即可        更新idx_M【实际只有k_r=mx时才更想idx_M】        */        #include
if(s.empty()) return s; //init char str[maxn]; int L=2*s.size()+1; for(int i=0;i
mx) k_r=k; else{ k_dual=2*idx_M-k; k_r=min(k+P[k_dual],mx); } while(2*k-(k_r+1)>=0 && (k_r+1)
mx){ idx_M=k; mx=k_r; } if(P[k]>P[ans]) ans=k; } string sans; for(int i=ans-P[ans];i<=ans+P[ans];++i) if(str[i]!='#') sans.push_back(str[i]); return sans; }};

转载于:https://www.cnblogs.com/ximelon/p/10768912.html

你可能感兴趣的文章
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
Vim脚本 - 竖线'|' 和反斜线'\'
查看>>
netty框架的学习笔记 + 一个netty实现websocket通信案例
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
setTimeOut(),和setInterVal()调用函数加不加括号!!!
查看>>
c/c++中保留两位有效数字
查看>>
urlparse获取url后面的参数
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
notepad++正则表达式例子
查看>>