leetcode -- 最长回文子串
Posted paopaolx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode -- 最长回文子串相关的知识,希望对你有一定的参考价值。
题目:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设?s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution
public String longestPalindrome(String s)
// 中心扩散法:如字符串s长度为n,则共有n+(n-1)== 2n-1个中心点,计算出以每个点为中心的最长回文子串,记录起始位置i和终止位置j
if(s.length() == 0)
return "";
int left = 0, right = 0;
for (int i = 0; i < s.length(); i++)
int odd = maxLength(s, i, i); // // 以i为中心点
int even = maxLength(s, i, i + 1); // 以i和i+1之间为中心点
int m = Math.max(odd, even);
if (m > right - left)
left = i - (m - 1) / 2; // 确定当前最大回文子串的起始点位置
right = i + m / 2; // 确定当前最大回文子串的结束点位置
return s.substring(left, right+1);
// 计算最大回文字串长度
public int maxLength(String s, int left, int right)
while(left>=0 && right<s.length() && s.charAt(left) == s.charAt(right))
left--;
right++;
return right-left-1;
以上是关于leetcode -- 最长回文子串的主要内容,如果未能解决你的问题,请参考以下文章