Leetcode:5.longest-palindromic-substring(最长回文子串)
这道题挺难的,暴力法固然爽,但是仍会超时,优化后也是,可能优化不够把;
从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(最长回文子串)相关推荐
- LeetCode 5. Longest Palindromic Substring 最长回文子串 Python 四种解法(Manacher 动态规划)
Longest Palindromic Substring 最长回文子串 学习笔记 1. Brute method 第一种方法:直接循环求解,o(n2)o(n^2) class Solution:de ...
- LeetCode:Longest Palindromic Substring 最长回文子串
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- Java Longest Palindromic Substring(最长回文字符串)
假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic string.如aba,或者abba.本题是这种,给定输入一个字符串.要求输出一个子串,使得子串是最长的padro ...
- 转载-----Java Longest Palindromic Substring(最长回文字符串)
转载地址:https://www.cnblogs.com/clnchanpin/p/6880322.html 假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic st ...
- 0005-Longest Palindromic Substring(最长回文子串)
这个系列算是出于个人兴趣开的一个新坑吧,最近看到同学刷LeetCode算法题,就想写写那些可以一行Python代码写出来的题目,因此本专栏的文章的解题方式效率不做保证,只为追求"一行的浪漫& ...
- C++longest palindromic subsequence最长回文子序列算法实现(附完整源码)
C++longest palindromic subsequence最长回文子序列算法 C++longest palindromic subsequence最长回文子序列算法实现完整源码(定义,实现, ...
- leetcode题库:5.最长回文子串Longest Palindrome string
题目描述: /** 题目地址:https://leetcode-cn.com/problems/longest-palindromic-substring/description/ * 题目:最长回 ...
- python【力扣LeetCode算法题库】5- 最长回文子串
5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...
- LeetCode题库5:最长回文子串——JavaScript解答
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意 ...
- 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)} ...
最新文章
- 30分钟LINQ教程【转】
- putty 中文乱码
- Centos Flex 2.6.4
- 计算机网络基础概念知识笔记
- linux下的安装命令行工具下载,linux系统程序安装(二)yum工具2-yum源及包下载
- 判断101-200之间有多少个素数,并输出所有素数。
- android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
- 三月活动之“桃花朵朵开 求爱上上签”
- 如何列出npm用户安装的软件包?
- 八、Mysql 间隙锁(gap 锁)与慢查询
- java 3000并发,还被面试官怼并发编程?来,吃点能量!Java并发编程技术
- [转]Flex 中的皮肤
- radiogroup多选_Android实现单项、多项选择操作
- 04 _ 可扩展架构案例(一):电商平台架构是如何演变的?
- opnet共享代码开发
- 阿里云ACA试题-云安全典型题19道
- 求助:mysql中可以正常启动项目,local:8080可以正常打开,但项目网页local:8080/zwsl没办法打开
- linux关闭proftpd服务,Linux ProFTPd安装与卸载详细介绍
- 极速办公(ppt)文字如何设置斜体
- 视觉SLAM十四讲CH3代码解析及课后习题详解