Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

Tags: String

容易想到的思路(可以解但会超时):

class Solution {
public:
string longestPalindrome(string s) {
int len = s.length();
for(int n=len; n>=; n--){
for(int i=; i<=len-n; i++){
if(isPalin(s.substr(i,n))){
return s.substr(i,n);
}
}
}
}
bool isPalin(string sub){
int len = sub.length();
for(int i=,j=len-; i<j; i++,j--){
if(sub[i]!=sub[j])
return false;
}
return true;
}
};

更好的思路:

上述思路相当于先构建一系列子字符串,然后分析每个子串是否回文数,这样将会有非常多的组合,计算复杂度高。这种思路其实是收缩的思路。

如果我们从前往后遍历,每次遍历到一个字符便以之为中心看能向两边扩散多远,从而形成一些列子串,如果形成的子串长度大于result,则更新result。这种思路是扩散的思路。

此题其实与LeetCode Algorithm 03有类似之处,即都不能直接构造固定长度字符串然后判断是否合乎要求。正确的做法都是先设定一个子串的出发点(端点或中心点),然后尽可能增长直到不满足条件,形成子串,然后更新原有的局部最佳子串,最终形成全局最长子串。

c++代码:

 class Solution {
public:
string centerToOutside(string s, int left, int right){
while(left>= && right<=s.length()- && s[left]==s[right]){
left--;right++;
}
return s.substr(left+, right-left-);
} string longestPalindrome(string s) {
int len = s.length();
if(len == ){
return "";
}
string result = s.substr(,);
for(int i=; i<len-; i++){
string s1 = centerToOutside(s, i, i);
if(s1.length() > result.length()){
result = s1;
}
string s2 = centerToOutside(s, i, i+);
if(s2.length() > result.length()){
result = s2;
}
}
return result;
} };

LeetCode Algorithm 05_Longest Palindromic Substring的更多相关文章

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

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

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

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

  3. 【JAVA、C++】LeetCode 005 Longest Palindromic Substring

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  4. [LeetCode][Python]Longest Palindromic Substring

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/longest ...

  5. [LeetCode] 5. Longest Palindromic Substring 最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  6. 求最长回文子串 - leetcode 5. Longest Palindromic Substring

    写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...

  7. LeetCode 5 Longest Palindromic Substring(最长子序列)

    题目来源:https://leetcode.com/problems/longest-palindromic-substring/ Given a string S, find the longest ...

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

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

  9. [LeetCode] 5. Longest Palindromic Substring ☆☆☆☆

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

随机推荐

  1. Windows Server 2016 辅助域控制器搭建

    Windows Server 2016 主域控制器搭建完成后,继续进行辅助域控制器搭建.1.更改服务器的IP地址2.修改服务器的名称3.打开服务器管理器,选择添加角色和功能4.选择,下一步5.选择,下 ...

  2. hdparm

    https://www.douban.com/note/244813504/ http://blog.sina.com.cn/s/blog_413d250e0101jtr7.html http://m ...

  3. 使用DbUtils实现增删改查——ResultSetHandler 接口的实现类

    在上一篇文章中<使用DbUtils实现增删改查>,发现运行runner.query()这行代码时.须要自己去处理查询到的结果集,比較麻烦.这行代码的原型是: public Object q ...

  4. Linux监控(OS,MySQL,Tomcat,Apache)

    关于逐步脱离开发岗位的意见,老大已经批准了,接下来我的主要工作就是"运维+数据库管理".感谢杰民兄和小马哥能接受我的骚扰.接下来还会去骚扰他们,同一时候也会去骚扰董大爷,小刚总,心 ...

  5. UNIX多线程编程

    一个程序至少有一个进程.一个进程至少有一个线程.进程拥有自己独立的存储空间,而线程能够看作是轻量级的进程,共享进程内的全部资源.能够把进程看作一个工厂.线程看作工厂内的各个车间,每一个车间共享整个工厂 ...

  6. sqlserver 小计合计总计

    SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计'WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN  F1+'合计'W ...

  7. 用Nagios监控Sql Server服务器

    在Suse 下配置Nagios来监控Ms SQL Server操作演示 本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  8. Repeater控件的

    http://blog.csdn.net/zhang_xinxiu/article/details/21872433 想起来,公司的aspx页面前台数据展示除了datagrid以为还有Repeater ...

  9. 一台服务器安装运行多个Tomcat及注册服务

    项目需要,自己配置了一下,顺便分享出来. 1.下载对应版本Tomcat,这里下载Tomcat7.0.65.zip; 下载地址:http://archive.apache.org/dist/tomcat ...

  10. xsy3320 string

    xsy3320 string 题意: ​ 给一颗树,每条边上有一个字符,求有多少条路径是回文的.(\(N\leq50000\),\(c\in\{1,2\}\)) 题解: ​ 前置芝士:回文前缀& ...