首页 > 编程知识 正文

leetcode 回文字符串

时间:2023-05-06 18:34:04 阅读:186809 作者:4610

马拉克算法因为看到了巨大的博客而受到了很大的启发。 所以省略说明。

巨大的博客

leetcode-最长回文字符串:给出字符串s,在s中找到最长的回文子串。 可以假设s的最大长度为1000。

示例1 :

键入: “babad”

输出: “bab”

请注意, “aba”也是有效的答案。

示例2 :

键入: “cbbd”

输出: “bb”

资料来源:力扣)。

链接: https://leet code-cn.com/problems/longest-palindromic-substring

版权归互联网所有。 商业转载请联系官方许可证。 非商业转载请注明出处。

原题链接

解题思想:懂马拉克就好了

交流代码: class solution (public : void init (strings,string des ) { int len=s.length ); for(intI=0; ilen; I ) { des='# '; des=s[i]; } des='# '; }stringsol(strings,string pre ) { int len=s.length ); int id; int mx=0; int p[10000]={0}; int maxlength=-1; int index=-1; for(intI=1; ilen-1; I () if ) imx ) ) p[I]=min ) p[2*id-I],mx-i ); } else{ p[i]=1; }while(s[I{ p[i] )==s[I-p[I] ) ) p[I]; (if ) p[I]imx ) { mx=p[i] i; id=i; (if ) p[I]-1maxlength ) { maxlength=p[i]-1; 索引=I; } } string ans=' '; intstart=(索引- maxlength-1 )/2; //这里与巨大的模板代码不同,额外减少了1,但是巨大博客上的同一个for(intI=start; 开始最大长度; I ) ) { ans=pre[i]; } return ans; } stringlongestpalindrome (strings ) if ) s.length )2) { return s; } string des='$ '; init(s,des; returnsol(des,s ); }; 总结:主要是为了留下巨大的博客(Orz )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。