题目
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
示例 3:
输入:s = "a"
输出:"a"
示例 4:
输入:s = "ac"
输出:"a"
使用中心扩展法,需要注意考虑中间两个相同的情况,java代码实现如下:
class Solution {
public int getLengthOfPalidrome(String s,int left,int right)
{
while(left>=0 && right<s.length() && s.charAt(left)==s.charAt(right))
{
left--;
right++;
}
return right-left-1;
}
public String longestPalindrome(String s) {
if (s==null || s.length()<1)
{
return "";
}
int start=0;
int max=0;
for(int i=0;i<s.length();i++)
{
int length1=getLengthOfPalidrome(s,i,i);
int length2=getLengthOfPalidrome(s,i,i+1);
int len=Math.max(length1,length2);
if (len>max)
{
max=len;
start=i-(len-1)/2;
}
}
return s.substring(start,start+max);
}
}
leetcode网站提交结果如下: