#include<bits/stdc++.h>
using namespace std;class Solution {                //ps:测试样例:"acbca"
public:string longestPalindrome(string s) {if (s.length() <= 1) {      //当字符串太短,直接返回本身return s;}int begin = 0, end = 0, max_length = 0;     //最长回文子串的开始、终止下标,以及长度int i, j;bool judge[1000][1000] = {};        //注意设置bool,否则int型无法定义到1000,会超界for (i = 1; i < s.length(); i++) {for (j = 0; j < i; j++) {/*首尾相等。并且要么在首尾相等的情况下,首尾之间的字符少于3个,则默认是回文串;要么大于3个,但是前面之间已经符合回文串(cbc)了,那么此次首尾又相等,则中间不用再判断,默认加上后就是个更大的回文串了*/if (s.at(j) == s.at(i) && (i - j + 1 <= 3 || judge[j + 1][i - 1] == true)) {judge[j][i] = true;int length = i - j + 1;if (length > max_length) {max_length = length;begin = j;end = i;}}}}if (max_length == 0) {     //当不存在回文串,则首字母本身要算个回文串max_length = 1;}return s.substr(begin, max_length);       //从下标begin开始,截取max_length个字符的字符串}
};int main() {Solution sol;string s;while (1) {cin >> s;cout << sol.longestPalindrome(s) << endl << endl;}return 0;
}

详解:

测试结果:

最长回文子串(C++,详细注释)相关推荐

  1. 20200118:(leetcode)最长回文子串(中心扩展算法详解及思考)

    最长回文子串(中心扩展算法详解及思考) 题目 中心扩展算法详解 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: " ...

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

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

  3. java最长回文子序列_LeetCode[5] - 最长回文子串动态规划

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

  4. 最长回文子串动态规划_九章算法 | 微软面试题:最长回文子串

    给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串. 在线评测地址:LintCode 领扣 样例 1: 输入:"abcdzdcab&quo ...

  5. 怎么判断一个字符串的最长回文子串是否在头尾_LeetCode5:最长回文子串

    最长回文子串问题是一个比较经典的题目,且字符串的处理问题也比较重要,这里实现了几种可行的方法,写了ac的表示可以通过,有的是可运行但是会超时或者是超过内存限制. 一:优化的暴力和暴力解 1.1 算是优 ...

  6. 最长回文子串的不同解法

    给定一个字符串,返回该字符串的最长回文子串.回文也就是说 .正着读和反着读是一样的.以下总结了几种求回文的方式: 方法1 : 非常easy,枚举全部的区间 [i,j] ,查看该范围内是否是一个回文. ...

  7. 最长回文子串 C++

    在一个字符串中要到最长的回文子串,有如下方案,代码在最后. 最长回文子串的相关博文 1.暴力法 最容易想到的就是暴力破解,求出每一个子串,之后判断是不是回文,找到最长的那个. 求每一个子串时间复杂度O ...

  8. [译+改]最长回文子串(Longest Palindromic Substring) Part II

    [译+改]最长回文子串(Longest Palindromic Substring) Part II 原文链接在http://leetcode.com/2011/11/longest-palindro ...

  9. 怎么判断一个字符串的最长回文子串是否在头尾_回文自动机入门

    缘起 回文自动机(Palindrome auto machine PAM,有些地方称之为回文树)是回文问题的大杀器~  本文使用一道很简单的题目入门这个精巧的数据结构. hdu 2163 Palind ...

最新文章

  1. 思维 ---- 两两匹配问题 2021杭电多校第6场 E - Median
  2. Mysql中对table的操作问题
  3. IsomorphicStrings(leetcode205)
  4. 转载:keil中使用Astyle格式化你的代码的方法2篇合
  5. 多种特征提取算法比较汇总
  6. 机器学习中的数据集划分问题
  7. 计算机网络-基本概念(9)【传输层】TCP拥塞控制 【网络层】拥塞避免
  8. struts2 form标签加上validate=true就出错的解决办法
  9. linux下面调试C、C++
  10. C/C++心得-结构体
  11. Android官方开发文档Training系列课程中文版:创建自定义View之View的交互
  12. eclipse混淆打包出错
  13. Idea中的搜索快捷键
  14. 七款修复工具介绍:不仅能修复U盘,SD卡、TF卡也能修复!
  15. java实现,获取今日0时0分0秒(最小时间)-获取今日23时59分59秒(最大时间) -线程安全方法
  16. 一个twitter puddles的算法实现
  17. 令人耳目一新的人类进化,读《人类简史》有感
  18. Access denied for user 'root'@'localhos
  19. 玩转WORD字体设置:WORD字间距怎么调整,WORD字体怎么调大等
  20. 毕业设计 基于JavaWeb的奖学金评定管理系统

热门文章

  1. matlab两横排合并,Matlab设置Legend横排、分块
  2. python的web自动化框架实例_Selenium基于Python web自动化测试框架 -- PO
  3. 《Python编程:从入门到实践》第13章:外星人来了
  4. 【VUE3+AntV X6】 引入ANTV X6 的流程图编辑器应用(一)
  5. GPU大百科全书 第一章:美女 方程与几何
  6. FFT快速傅里叶变换详解
  7. 计算开机时间c语言编程,一个计算电脑开机时间长短的程序,还有点小问题,请VC99大哥来指教...
  8. 来自法院解释股权代持就涵盖了股权转让的意思
  9. 2.PRT文件的解析
  10. 8 基于matplotlib的python数据可视化——导入Excel数据制作雷达图