【问题】给定一个字符串 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. 跳蚤[BZOJ4310](后缀数组+二分答案传判定)

    不知道后缀数组的请退回去! 题面: 题目描述 很久很久以前,森林里住着一群跳蚤.一天,跳蚤国王得到了一个神秘的字符串,它想进行研究.首先,他会把串分成不超过 k 个子串,然后对于每个子串 S,他会从S ...

  2. 关于MySQL连接Navicat Premium 12失败的解决方法

    出现问题的原因:MySQL8.0之后更换了加密方式,而这种加密方式客户端不支持 解决:更改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysq ...

  3. js 转换时间戳为时间格式并且按指定格式输出

    /** * 时间戳转换为日期 */ function convertTimestamp(timestamp){ // 时间戳转换为日期 var d = new Date(timestamp); // ...

  4. 【LeetCode】113. 路径总和 II

    题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ ...

  5. 【剑指Offer】面试题34. 二叉树中和为某一值的路径

    题目 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / ...

  6. P1072 开学寄语

    P1072 开学寄语 转跳点:

  7. input type="submit" 和"button"有什么区别

    HTML中<input type="submit" /> 和 <input type="button" /> 主要从元素定义类型.点击触 ...

  8. Vue(九)---自定义指令(directive )

    1.无参数 自定义指令的方式:1. 使用Vue.directive 来自定义2. 第一个参数就是 指令名称 xart3. el 表示当前的html dom对象4. 在方法体内就可以通过 innerHT ...

  9. sql语句中 and 与or 的优先级

  10. Unity 打开其他exe文件

    using UnityEngine; using System.Collections; using System.Diagnostics;///// public class FeiYuZhu : ...