LeetCode(5) Longest Palindromic Substring
来源:互联网 发布:沙箱 行为分析软件 编辑:程序博客网 时间:2024/06/05 01:09
题目为:
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
使用动态规划,可以将时间复杂度降低到0(n^2)。
动态规划方程式为:
设dp[i][j]=true,表示从i到j的子串是回文子串。
则dp[i][j] = dp[i+1][j-1] if s[i]=s[j]
dp[i][j] = false if s[i]!=s[j]
代码如下:
public class Solution {public String longestPalindrome(String s) {int maxlength = 0;int head =0;if(s==null){return null;}if(s.length()==0){return null;}int n = s.length();boolean [][]dp = new boolean [n+1][n+1];for(int i=0;i<n;i++){for(int j=0;j<n;j++){dp[i][j]=false;}dp[i][i]=true;}maxlength = 1;head = 0;for(int i=0;i<n-1;i++){if(s.charAt(i)==s.charAt(i+1)){dp[i][i+1] = true;if(maxlength<2&&dp[i][i+1]){maxlength = 2;head = i;}}}for(int length = 3; length <= n; length ++){for(int i=0;i+length-1<n;i++){if(s.charAt(i)==s.charAt(i+length-1)){dp[i][i+length-1] = dp[i+1][i+length-2];if(length>maxlength&&dp[i][i+length-1]){maxlength = length;head = i;}}}}return s.substring(head,head+maxlength); }}
0 0
- LeetCode 5 - Longest Palindromic Substring
- LeetCode(5) Longest Palindromic Substring
- Leetcode【5】:Longest Palindromic Substring
- [leetcode 5] Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- [Leetcode] 5 - Longest Palindromic Substring
- LeetCode 5:《Longest Palindromic Substring》
- [leetcode 5] Longest Palindromic Substring
- LeetCode | #5 Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- LeetCode(5) Longest Palindromic Substring
- LeetCode 5:Longest Palindromic Substring
- LeetCode 5 - Longest Palindromic Substring
- leetcode #5 Longest Palindromic Substring
- Longest Palindromic Substring leetcode 5
- leetcode 5 -- Longest Palindromic Substring
- 黑马程序员——拓展
- 我的Cocos2d-x学习笔记(七)纹理缓存、帧缓存、精灵的创建、zOrder
- Ubuntu14.04 LTS 设置网易163源
- HDU1213---How Many Tables
- linux下安装jdk1.6版本显示1.4,修改默认jdk版本
- LeetCode(5) Longest Palindromic Substring
- 今天开始尝试每天写博客
- 并发 并行 同步 异步 多线程 阻塞 非阻塞的区别
- 迅为适合初学者的Cortex-A9+Android视频教程的4412开发板
- Codeforces Round #305 (Div. 2)_B
- quartusII综合报错(Error (10028): Can't resolve multiple constant drivers for net "txd_cnt[3]")
- Intellij IDEA 配置Subversion插件
- X86架构了解(二)——中断与异常
- 黑马程序员(一)——初识java