博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-longestPalindrome-java
阅读量:5117 次
发布时间:2019-06-13

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

动态规划中比较简单的实现

动态规划的原理:,讲解的非常清楚

这道题可以参考动态规划的原理,将status[i][j]的值表示为,字符串从i到j的子串是否为回文字符串,其递推公式为,如果s[i]=s[j],status[i][j]=status[i+1][j-1],否则status[i][j]=0;

详细的说明和容易出的问题放在代码注释中:

1     public String longestPalindrome(String s) 2     { 3  4         int length = s.length(); 5         if (length <= 1) { 6             return s; 7         } 8         boolean[][] temp = new boolean[length][length];//注意是Boolean类型,一开始我用的int[][],超时,也不知道具体原因 9         //初始化数组10         for (int i = 0; i < length; i++) {11             for (int j = 0; j < length; j++) {12                 if (i >= j) {//为什么要初始化为1?如果是s[3][4]的递推公式就要依赖s[4][3],在s[3]==s[4]的情况下,当然是=1的13                     temp[i][j] = true;14                 } else {15                     temp[i][j] = false;16                 }17             }18         }19 20         int i;21         int j = 1;22         int maxlen = 0;23         int ri=0;24         int rj=0;25         while (j < length) {26             i = j - 1;27 28             while (i >= 0) {29                 if (s.charAt(i) != s.charAt(j)) {30                     temp[i][j] = false;31 32                 } else {33                     temp[i][j] = temp[i + 1][j - 1];34                     if (temp[i][j] == true && (j - i + 1) > maxlen) {35                         ri=i;//记录下来坐标,最后再直接返回,因为substring很慢,不要总用36                         rj=j;37                         maxlen = j - i+ 1;38                     }39                 }40 41                 i--;42             }43             j++;44         }45         return s.substring(ri, rj+1);46     }

 

 

转载于:https://www.cnblogs.com/lance-/p/3570795.html

你可能感兴趣的文章
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>