leetcode-5. Longest Palindromic Substring(寻找最长回文子串)
2017-06-04 22:25
645 查看
https://leetcode.com/problems/longest-palindromic-substring/#/description
问题描述:
思路解析:
给定一个字符串s
采用dp的思想,boolean数组dp[i][j]代表s(i … j)是一个回文串,当且仅当dp[i+1][j-1]为真并且s[i]==s[j].
我们考虑子串的长度1和2时,手动填充到数组中,3~length-1单独考虑。
记录起始位置和最长子串的长度。
如果一个字符串里面没有回文串,返回第一个字符比如”abcde” 则返回”a”
代码如下:
问题描述:
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example: Input: "cbbd" Output: "bb"
思路解析:
给定一个字符串s
采用dp的思想,boolean数组dp[i][j]代表s(i … j)是一个回文串,当且仅当dp[i+1][j-1]为真并且s[i]==s[j].
我们考虑子串的长度1和2时,手动填充到数组中,3~length-1单独考虑。
记录起始位置和最长子串的长度。
如果一个字符串里面没有回文串,返回第一个字符比如”abcde” 则返回”a”
代码如下:
public class Solution { public String longestPalindrome(String s) { int len=s.length(); int start=0,max=0; if(s.length()==1)return s; boolean[][] dp=new boolean[len][len]; for(int i=0;i<len;i++) { dp[i][i]=true; if(i<len-1 && s.charAt(i)==s.charAt(i+1) ) { dp[i][i+1]=true; max=2; start=i; } } for(int strlen=3; strlen<=len ;strlen++) { //i最终移到len+strlen的位置,才能保证这个子串的长度为是strlen for(int i=0;i<=len-strlen;i++) { int j=i+strlen-1; if(s.charAt(i)==s.charAt(j) && dp[i+1][j-1]) { dp[i][j]=true; start=i; max=strlen; } } } if(max>0) return s.substring(start,start+max); else { //如果一个字符串里面没有回文串,返回第一个字符 return s.substring(0,1); } // return null; } }
相关文章推荐
- LeetCode-5-Longest Palindromic Substring 最长回文子串DP
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
- leetcode--Longest Palindromic Substring--最长回文子串--
- leetcode (5) - Longest Palindromic Substring 最长回文子串
- LeetCode---5. Longest Palindromic Substring(最长回文子串)
- 【LeetCode刷题】最长回文子串Longest Palindromic Substring(java)
- [C++]LeetCode: 99 Longest Palindromic Substring (最长回文子串)
- LeetCode | Longest Palindromic Substring(最长回文子串)
- LeetCode_5---Longest Palindromic Substring (求最长回文子串)
- [Leetcode #5]Longest Palindromic Substring 寻找最长回文子串
- LeetCode OJ-5.Longest Palindromic Substring(最长回文子串)
- [Leetcode #5]Longest Palindromic Substring 寻找最长回文子串
- LeetCode-Longest Palindromic Substring-最长回文子串-Manacher
- leetcode(5)—— Longest Palindromic Substring(最长回文子串)
- leetcode Longest Palindromic Substring最长回文子串
- leetcode5-Longest Palindromic Substring(最长回文子串)
- LeetCode 5. Longest Palindromic Substring(最长回文子串)
- LeetCode:5_Longest Palindromic Substring | 最长的回文子串 | Medium
- [LeetCode] Longest Palindromic Substring 最长回文子串
- [C++]LeetCode 5: Longest Palindromic Substring(最长回文子串)