Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example 2:
Input: “cbbd”
Output: “bb”

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| public class Solution {
public String longestPalindrome(String s) { int len = s.length(); if (len < 2) { return s; }
boolean[][] dp = new boolean[len][len];
for (int i = 0; i < len; i++) { dp[i][i] = true; }
int maxLen = 1; int start = 0;
for (int j = 1; j < len; j++) { for (int i = 0; i < j; i++) {
if (s.charAt(i) == s.charAt(j)) { if (j - i < 3) { dp[i][j] = true; } else { dp[i][j] = dp[i + 1][j - 1]; } } else { dp[i][j] = false; }
if (dp[i][j]) { int curLen = j - i + 1; if (curLen > maxLen) { maxLen = curLen; start = i; } } } } return s.substring(start, start + maxLen); } }
|
Reference
https://leetcode-cn.com/problems/longest-palindromic-substring