博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头做leetcode之leetcode 5 最长回文子串
阅读量:2438 次
发布时间:2019-05-10

本文共 1299 字,大约阅读时间需要 4 分钟。

5.最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

回文子串是“aba” “abba”这种的 “abaca”不是

  1. 这道题如果用暴力法,对每一个字符找他的回文子串时间复杂度会是O(n³),在leetcode上一个很长的测试用例会超出时间限制。(由于没有通过,所以在本文最后再贴出暴力法的代码。)
    超时的测试用例:
    在这里插入图片描述
  2. 由于最近刚刚温习了动态规划,所以在优化算法的时候就想起了动态规划的方法,也就是如果i位置和j位置的字符相同且i+1到j-1的字符串是一个回文子串的话,那么从i到j的字符串也是一个回文子串。
class Solution {
public: string longestPalindrome(string s) {
int maxlength=1,flag=0; if(s.size()==0){
return ""; } vector
> str(s.size(),vector
(s.size()));//定义一个二维数组来表示回文子串的起点和终点 for (int i=0; i

通过时间:

在这里插入图片描述
再贴出我的暴力法代码,仅供参考:

class Solution {
public: string longestPalindrome(string s) {
int maxlength=1,flag=0; if(s.size()==0){
return ""; } for(int i=0;i
i;j--){
int flagi=i; int flagj=j; while(s[flagj]==s[flagi]){
if(flagi==flagj || flagi==flagj-1){
if( (j-i+1) > maxlength ){
maxlength=j-i+1; flag=i; } break; } flagj--; flagi++; } } } return s.substr(flag,maxlength); }};

转载地址:http://inemb.baihongyu.com/

你可能感兴趣的文章
Oracle SQL性能优化系列讲座之二(转)
查看>>
多条件数据库查询的优化方法(转)
查看>>
一个过滤重复数据的sql语句(转)
查看>>
SQL语言快速入门(转)
查看>>
简单SQL语句小结(转)
查看>>
跟我学SQL(转)
查看>>
SQL语法参考手册(转)
查看>>
Oracle SQL性能优化系列讲座之三(转)
查看>>
全面接触SQL语法(转)
查看>>
Sql语句密码验证安全漏洞(转)
查看>>
数据库设计三大范式应用实例剖析(转)
查看>>
关系型数据库系统简介(转)
查看>>
数据挖掘技术简介(转)
查看>>
为数据库建立索引(转)
查看>>
合理选择数据挖掘工具(转)
查看>>
数据库设计范式深入浅出(转)
查看>>
数据库规范化三个范式应用实例(转)
查看>>
XML与面向Web的数据挖掘技术(转)
查看>>
创新性应用 数据建模经验谈(转)
查看>>
网络数据库的复制和同步(转)
查看>>