博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划—最长回文子串LEETCODE第5题深度剖析
阅读量:5141 次
发布时间:2019-06-13

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

动态规划对于笔者来说有很重要的意义

一、题目如下:

对于此类题目,笔者常用的的办法是先做个暴力解题思路,然后再对暴力法进行优化。

二、暴力法

//字串遍历public static String longestPalindrome(String s) {   String result="";    if(s.length()==1) return s;for(int i=0;i
result.length())result=s.substring(i,j);}}return result;}//回文判断public static boolean test(String str) {
for(int i=0;i

 

这段代码虽然不出意外的超时了,但是确实是我们第一步要考虑的。这个暴力法很简单,一个一个字串的检测,直到检测完所有的字符串。可是这不是我们想要的。

三、动态规划方法

首先要修改的就是我们的第一个字符串遍历的方法。思路为,既然我们知道了一个串为回文,那这个串左字母和右字母如果相同的话,不就又是一个回文字符串了吗。

不过这个思路要解决的问题有俩个:

1.找到所有起始字符串,并且将这些字符串下标保存到ArrayList数组里面

2.对每个字符串进行动态扩张。扩张到不能再扩为止。

public static String longestPalindrome(String s) {        //定义一个结构保存所有字串        class Str{            Str(int i,int j){                this.i=i;                this.j=j;            }            int i;            int j;        }        if(s.length()==1) return s;        ArrayList
al =new ArrayList<>(); for(int i=0;i
=(large.j-large.i)) large=str; } return s.substring(large.i,large.j+1); }

 

四、笔者对动态规划法的看法。

动态规划没有确切的定义,但拿这题来说,笔者只是把所有需要的数据存储在内存中。再把这些数据拿出来进行动态扩张。

转载于:https://www.cnblogs.com/godoforange/p/10834657.html

你可能感兴趣的文章
Java变量命名规范
查看>>
爬虫大作业-爬取B站弹幕
查看>>
delta3d与ode物理引擎的结合。
查看>>
重载与重写的区别
查看>>
小甲鱼pe结构讲解
查看>>
OD使用教程9 - 调试篇09|解密系列
查看>>
外中断01 - 零基础入门学习汇编语言69
查看>>
PE格式详细讲解11 - 系统篇11|解密系列
查看>>
Qt532_自定义QWebView_01
查看>>
QtTCP_ZC
查看>>
iphone应用程序生命周期浅析
查看>>
Git 中 SSH key 生成步骤
查看>>
ActiveMQ消息游标 --转载
查看>>
Expectation Maximization and GMM
查看>>
Java语言基础-多线程
查看>>
ArcGIS中的坐标系定义与转换 (转载)
查看>>
Nginx 负载平衡 支持域名转发的方法
查看>>
[转]Extjs combo数据绑定与获取
查看>>
spring Controller 层注解获取 properties 里面的值
查看>>
Element-ui多选下拉实现全部与其他互斥
查看>>