【问题】给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 :
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 :
输入: "cbbd"
输出: "bb"

【思路】判断一个字符串是不是回文字符串,一个很简单的思路就是从中间向两边依次展开判断对应位置是否相等,但题目是让求最长回文子串,那么我们遍历所有的字符,以每个字符为中心向两边拓展,就ok了,但是存在两种情况:

  1. "aba", 这种情况我们可以从中心一直向两边拓展,从而使回文子串

  2. "abba", 这种情况我们如果直接使用从中心拓展判断,就会出现错误,因此需要从两个相邻的数出发,同时向两边拓展,而不是仅仅从一个中心位置出发

因此我们在遍历时,对于每个字符,都要考虑上面两种情况!

  • PalindromeCore(s, i, i);

  • PalindromeCore(s, i, i+1);

注意:Coding时注意i, j的位置,正确计算好最大长度!

class Solution {
private:
int left = , maxlen = ;
public:
void PalindromeCore(string s, int i, int j){
while(i >= && j < s.length() && s[i] == s[j]){
i--; j++;
}
if(maxlen < j-i-){
left = i+; // 由于上面跳出循环i自减了,j自加了
maxlen = j-i-;
}
} string longestPalindrome(string s) {
if(s.length() < ){
return s;
}
for(int i = ;i < s.length(); i++){
PalindromeCore(s, i, i);
PalindromeCore(s, i, i+);
}
return s.substr(left, maxlen);
// substr实质从left位置开始数maxlen个字符构成的子串
} };

【LeetCode】最长回文子串-中心扩展法的更多相关文章

  1. leetcode -- 最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  2. [LeetCode]最长回文子串 java

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

  3. LeetCode.5-最长回文子串(Longest Palindromic Substring)

    这是悦乐书的第342次更新,第366篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第3题(顺位题号是5).给定一个字符串s,找到s中最长的回文子字符串. 您可以假设s ...

  4. LeetCode最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: & ...

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

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

  6. 转载:LeetCode:5Longest Palindromic Substring 最长回文子串

    本文转自:http://www.cnblogs.com/TenosDoIt/p/3675788.html 题目链接 Given a string S, find the longest palindr ...

  7. 【LeetCode】最长回文子串【动态规划或中心扩展】

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...

  8. leetcode 求一个字符串的最长回文子串

    最长回文子串问题:给定一个字符串,求它的最长回文子串长度.如果一个字符串正着读和反着读是一样的,那它就是回文串.   给定一个字符串,求它最长的回文子串长度,例如输入字符串'35534321',它的最 ...

  9. LeetCode(5):最长回文子串

    Medium! 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 长度最长为1000. 示例: 输入: "babad" 输出: "bab&quo ...

随机推荐

  1. 解决vmware 桥联 再次使用联不上网的问题

    在vmare里 编辑 虚拟网络配置   桥联  自动设置 改为你正在联网的网卡  这个问题针对有线网卡 和无限网卡使用的问题

  2. 题解 P5043 【【模板】树同构([BJOI2015]树的同构)】

    进入正题 题意:将所有树结构相同的树归类. 思路 嗯,这道题让我们把树的结构归类,自然而然就想到了哈希,我们对这整颗树哈希一遍.然后判同构就十分之简单了.只需要找哈希值一样的树就可以了. 其实真得很简 ...

  3. sklearn中实现随机梯度下降法(多元线性回归)

    sklearn中实现随机梯度下降法 随机梯度下降法是一种根据模拟退火的原理对损失函数进行最小化的一种计算方式,在sklearn中主要用于多元线性回归算法中,是一种比较高效的最优化方法,其中的梯度下降系 ...

  4. switch不能case字符串

    改用if(){ }else if(){ }

  5. python2学习------基础语法5(文件操作)

    1.文件内容读取 a.txt teestttttttttttttt teestttttttttttttt teestttttttttttttt teestttttttttttttt teesttttt ...

  6. python2学习------基础语法2(函数)

    1.函数 # 无参数函数 def loopTest2(): a=1; while a<40: print a; a=a+1; if a==35: continue; else: print 'o ...

  7. linux(centos6.9)下rpm方式安装mysql后mysql服务无法启动

    以下两种方式启动都报错:启动失败: [root@node03 ~]# service mysqld startMySQL Daemon failed to start.Starting mysqld: ...

  8. vue使用videojs控制后台m3u8数据请求

    关于Video.js的使用方法就不再说了,有兴趣的请迁跃:https://videojs.com/ VideoJS中并没有stop之类控制后台数据请求的参数,只有暂停 video.pause()方法 ...

  9. java类 2.18

    1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员.如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量.如: 2. 在普通成员方法中,则可 ...

  10. log4j 功能说明

    log4j 是一个非常强大的日志工具,应用于很多开源项目的.具体有以下几种功能: 定制不同输出的级别:ALL > TRACE > DEBUG > INFO > WARN > ...