leetcode Longest Palindromic Substring
2013-10-26 16:59
399 查看
O(n^3)的程序:
O(n^2):使用递归来做,使用dp[][]数组来构造动归,dp[i][j]表示以i为开头,以j为结尾的字符型是否为回文字符串,以k表示字符串长度,自k=1开始计算dp[i][i+k],随后k+1再算,知道计算出最后。在这个过程中,如果出现了回文字符串,将当前的k与之前的最大长度比较,如果大于,就更新最大长度以及起始点和终点。程序如下:
此外,其他作者还写出有kmp匹配法以及一种名为Manacher’s Algorithm的算法,详情/article/7616124.html
public String longestPalindrome(String s) { // Note: The Solution object is instantiated only once and is reused by each test case. int sMax=0,eMax=0,lMax=0; int len=s.length(); for(int i=0;i<len-1;i++){ for(int k=0;i+k<len;k++){ int j=i+k; int iTemp=i,jTemp=j; while(s.charAt(iTemp)==s.charAt(jTemp)&&iTemp>=0&&jTemp>0&&jTemp>=iTemp){ iTemp++; jTemp--; } if(iTemp>=jTemp){ if(k>lMax){ lMax=k; sMax=i; eMax=j; } } } } return s.substring(sMax,eMax+1); }
O(n^2):使用递归来做,使用dp[][]数组来构造动归,dp[i][j]表示以i为开头,以j为结尾的字符型是否为回文字符串,以k表示字符串长度,自k=1开始计算dp[i][i+k],随后k+1再算,知道计算出最后。在这个过程中,如果出现了回文字符串,将当前的k与之前的最大长度比较,如果大于,就更新最大长度以及起始点和终点。程序如下:
public String longestPalindrome(String s) { // Note: The Solution object is instantiated only once and is reused by each test case. int maxL,maxS,maxE; maxL=maxS=maxE=0; int len=s.length(); boolean dp[][]=new boolean[len][len]; for(int i=0;i<len;i++){ for(int j=0;j<len;j++){ if(i>=j) dp[i][j]=true; else dp[i][j]=false; } } for(int k=1;k<len;k++){ for(int i=0;i<len;i++){ int j=i+k; if(j>=len) break; if(s.charAt(i)==s.charAt(j)){ if(dp[i+1][j-1]||i>=len-1){ dp[i][j]=true; if(k>maxL){ maxL=k; maxS=i; maxE=j; } } }else{ dp[i][j]=false; } } } return s.substring(maxS,maxE+1); }
此外,其他作者还写出有kmp匹配法以及一种名为Manacher’s Algorithm的算法,详情/article/7616124.html
相关文章推荐
- LeetCode5:Longest Palindromic Substring
- leetcode题解-647. Palindromic Substrings && 5. Longest Palindromic Substring
- Leetcode: Longest Palindromic Substring. java
- LeetCode-5 Longest Palindromic Substring
- LeetCode题解——Longest Palindromic Substring
- 【leetcode with java】5 Longest Palindromic Substring
- LeetCode:5_Longest Palindromic Substring | 最长的回文子串 | Medium
- 【leetcode】Longest Palindromic Substring
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring--最长回文字符串
- [leetcode]Longest Palindromic Substring
- leetcode-longest palindromic substring
- leetcode[Longest Palindromic Substring]//待整理多种解法
- LeetCode 5. Longest Palindromic Substring
- [LeetCode 解题报告]005.Longest Palindromic Substring
- LeetCode(5) Longest Palindromic Substring
- leetcode [005] : Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- leetcode 5-Longest Palindromic Substring
- LeetCode 5:Longest Palindromic Substring