标签:solution i+1 计算 长度 span etc 回文字符串 中心 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"
还是用DP来递归,抓住回文字符串的“中心”(对称轴)来考虑,一共可能有2n-1个对称轴。单独写一个expand函数来计算该对称轴对应的最大回文字符串长度。
expand的思想就是:当l,r两个字符相等时,就可认为l-1到r+1之间的也是回文字符串。
class Solution { public String longestPalindrome(String s) { if(s == null || s.length() == 0) return ""; int start = 0, end = 0; for(int i=0; i<s.length();i++) { int len1 = expand(s,i,i); int len2 = expand(s,i,i+1); int len = Math.max(len1,len2); if(len > end - start){ start = i - (len-1)/2; end = i + len/2; } } return s.substring(start, end+1); //记住这个用法(直接取子集) } public int expand(String s, int l, int r){ while(l>=0 && r<s.length() && s.charAt(l)==s.charAt(r)) { l--; r++; } return r-l-1; } }
leetcode 5. Longest Palindromic Substring
标签:solution i+1 计算 长度 span etc 回文字符串 中心 substring
原文地址:https://www.cnblogs.com/jamieliu/p/10324896.html