这道题挺难的,暴力法固然爽,但是仍会超时,优化后也是,可能优化不够把;
从0 - length-1用中心扩展法能保证比暴力法O(n^3)低;
好像官网还给出三个方法,有时间可以细琢磨;

#include <iostream>
#include <string>
using namespace std;//中心扩展法
string longestPalindrome(string s)
{int len=s.length();if(s.length()==1) return s;string result="";int max=0;for(int i=0;i<len;i++){int j;string test="";for(j=i-1;j>=0 && 2*i-j<len ;j--) //j=i-1 与 i+1比{if(s[j]!=s[2*i-j]) {break;}}test=s.substr(j+1,2*i-2*j-1);//注意C++的substr(a,size)指取的是以a为左端点的size个字符if(test.length()>max){max=test.length();result=test;}for(j=i-1;j>=0 && 2*i-j-1<len ;j--)//j=i-1 与 i比{if(s[j]!=s[2*i-j-1]) {break;}}test=s.substr(j+1,2*i-2*j-2);if(test.length()>max){max=test.length();result=test;}}return result;
}
//暴力法
// bool isPalindrome(string s)
// {//     int len = s.length();
//     for (int i = 0; i < len / 2; i++)
//     {//         if (s[i] != s[len - i - 1])
//             return false;
//     }
//     return true;
// }// string longestPalindrome(string s) //a b  c d e f g f e d
// {                                  //abccb       //aa
//     int len = s.length();
//     string result = "";
//     int max = 0; //最长字串长度
//     for (int i = 0; i < len; i++)
//     {//         for (int j = i ; j < len; j++)
//         {//             string test = s.substr(i, j -i+1);
//             if (test.length() > max && isPalindrome(test))
//             {//                 max = test.length();
//                 result = test;
//             }
//         }
//     }
//     return result;
// }int main()
{cout<<longestPalindrome("a") << endl;cout << longestPalindrome("cbbd") << endl;cout << longestPalindrome("zudfweormatjycujjirzjpyrmaxurectxrtqedmmgergwdvjmjtstdhcihacqnothgttgqfywcpgnuvwglvfiuxteopoyizgehkwuvvkqxbnufkcbodlhdmbqyghkojrgokpwdhtdrwmvdegwycecrgjvuexlguayzcammupgeskrvpthrmwqaqsdcgycdupykppiyhwzwcplivjnnvwhqkkxildtyjltklcokcrgqnnwzzeuqioyahqpuskkpbxhvzvqyhlegmoviogzwuiqahiouhnecjwysmtarjjdjqdrkljawzasriouuiqkcwwqsxifbndjmyprdozhwaoibpqrthpcjphgsfbeqrqqoqiqqdicvybzxhklehzzapbvcyleljawowluqgxxwlrymzojshlwkmzwpixgfjljkmwdtjeabgyrpbqyyykmoaqdambpkyyvukalbrzoyoufjqeftniddsfqnilxlplselqatdgjziphvrbokofvuerpsvqmzakbyzxtxvyanvjpfyvyiivqusfrsufjanmfibgrkwtiuoykiavpbqeyfsuteuxxjiyxvlvgmehycdvxdorpepmsinvmyzeqeiikajopqedyopirmhymozernxzaueljjrhcsofwyddkpnvcvzixdjknikyhzmstvbducjcoyoeoaqruuewclzqqqxzpgykrkygxnmlsrjudoaejxkipkgmcoqtxhelvsizgdwdyjwuumazxfstoaxeqqxoqezakdqjwpkrbldpcbbxexquqrznavcrprnydufsidakvrpuzgfisdxreldbqfizngtrilnbqboxwmwienlkmmiuifrvytukcqcpeqdwwucymgvyrektsnfijdcdoawbcwkkjkqwzffnuqituihjaklvthulmcjrhqcyzvekzqlxgddjoir") << endl;return 0;
}

如有建议,感谢指明!!!

Leetcode:5.longest-palindromic-substring(最长回文子串)相关推荐

  1. LeetCode 5. Longest Palindromic Substring 最长回文子串 Python 四种解法(Manacher 动态规划)

    Longest Palindromic Substring 最长回文子串 学习笔记 1. Brute method 第一种方法:直接循环求解,o(n2)o(n^2) class Solution:de ...

  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 Longest Palindromic Substring(最长回文字符串)

    假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic string.如aba,或者abba.本题是这种,给定输入一个字符串.要求输出一个子串,使得子串是最长的padro ...

  4. 转载-----Java Longest Palindromic Substring(最长回文字符串)

    转载地址:https://www.cnblogs.com/clnchanpin/p/6880322.html 假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic st ...

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

    这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求"一行的浪漫& ...

  6. C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)

    C++longest palindromic subsequence最长回文子序列算法 C++longest palindromic subsequence最长回文子序列算法实现完整源码(定义,实现, ...

  7. leetcode题库:5.最长回文子串Longest Palindrome string

    题目描述: /** 题目地址:https://leetcode-cn.com/problems/longest-palindromic-substring/description/  * 题目:最长回 ...

  8. python【力扣LeetCode算法题库】5- 最长回文子串

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

  9. LeetCode题库5:最长回文子串——JavaScript解答

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

  10. leetcode(5)—— Longest Palindromic Substring(最长回文子串)

    longest-palindromic-substring 法1:暴力搜索(但会超时) 遍历全部子串(n+(n−1)+-+1=n(1+n)2n+(n-1)+\ldots+1=\frac{n(1+n)} ...

最新文章

  1. 30分钟LINQ教程【转】
  2. putty 中文乱码
  3. Centos Flex 2.6.4
  4. 计算机网络基础概念知识笔记
  5. linux下的安装命令行工具下载,linux系统程序安装(二)yum工具2-yum源及包下载
  6. 判断101-200之间有多少个素数,并输出所有素数。
  7. android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
  8. 三月活动之“桃花朵朵开 求爱上上签”
  9. 如何列出npm用户安装的软件包?
  10. 八、Mysql 间隙锁(gap 锁)与慢查询
  11. java 3000并发,还被面试官怼并发编程?来,吃点能量!Java并发编程技术
  12. [转]Flex 中的皮肤
  13. radiogroup多选_Android实现单项、多项选择操作
  14. 04 _ 可扩展架构案例(一):电商平台架构是如何演变的?
  15. opnet共享代码开发
  16. 阿里云ACA试题-云安全典型题19道
  17. 求助:mysql中可以正常启动项目,local:8080可以正常打开,但项目网页local:8080/zwsl没办法打开
  18. linux关闭proftpd服务,Linux ProFTPd安装与卸载详细介绍
  19. 极速办公(ppt)文字如何设置斜体
  20. 视觉SLAM十四讲CH3代码解析及课后习题详解

热门文章

  1. c语言是如何实现泛型链表
  2. JAVA ------- eclipse使用的步骤: %## 使用小技巧 ##%
  3. Yii和ThinkPHP对比心得
  4. 比较HTML元素和Native组件的区别
  5. MySQL在Windows和Linux减少数据库
  6. 效率低的日子怎么办?
  7. 在类库文件无法使用Server.MapPath
  8. 7天学完Java基础之4/7
  9. .NetCore Session.Redis
  10. Web API系列之三 基本功能实现