【问题】给定一个字符串 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. ABC154 E - Almost Everywhere Zero

    数位DP模板,记忆化+限制即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) ...

  2. 车林通购车之家--购车计算器模块js实现

    //jsq-nav.twig <ul class="switch-nav db-tags bgfff clearfix"> <li id="qk&quo ...

  3. php 语法错误定位 try catch Throwable

    try { } catch (Exception $ex) {      // 计算错误 }  catch (Throwable $ex) { // 语法错误,致命错误 }   Throwable { ...

  4. 小程序canvas 变换

    var ctx = wx.createCanvasContext('base'); var centerX = 375/ 2; var centerY = 200; var rotate = 90; ...

  5. ROS 命令行工具的使用

    1.roscore 打开一个新的master(master:进程),只能运行一个,运行两个会报错,使用ROS第一步就是要打开roscore 2.rosrun rosrun的使用格式一般为:rosrun ...

  6. 在 Scale Up 中使用 Health Check【转】

    对于多副本应用,当执行 Scale Up 操作时,新副本会作为 backend 被添加到 Service 的负载均衡中,与已有副本一起处理客户的请求.考虑到应用启动通常都需要一个准备阶段,比如加载缓存 ...

  7. C++代写,代写C++,C++程序代写,C++ assignment代写

    C++代写,代写C++,C++程序代写 关于C++代写,我们的涉猎范围: C++数据结构.算法题目 C++操作系统os题目 C++网络编程networking题目 C++ Linux题目 C++ Wi ...

  8. spring boot 接口service有多个实现类

    接口.java public interface DeService { } 接口实现类1.java @Service("ud")public class DeServiceImp ...

  9. DataFoundation比赛总结

    2018.3.20号左右,因为研究生的数据挖掘课程的老师要求我们集体参加一个比赛 ,所以在比赛参与时间.比赛难度和比赛类型的几种条件下,我们选择了2018平安产险数据建模大赛-驾驶行为预测驾驶风险比赛 ...

  10. Install and Configure NFS Server on RHEL 8 / CentOS 8

    https://computingforgeeks.com/install-and-configure-nfs-server-on-centos-rhel/