给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
所谓回文子串,就是从中间向左右扩散时字符相同;
以此为起点来寻找回文子串
class Solution {
private String palindrome(String s,int i)
{
int start=i,end=i+1;
while(start>=0&&end<s.length())
{
if(s.charAt(start)==s.charAt(end))
{
int count=end-start+1;
start--;
end++;
}
else break;
}
return s.substring(start+1,end);
}//长度为偶数时的回文串
public String longestPalindrome(String s) {
int count=0,begin=0;
String ans="";
for(int i=0;i<s.length();i++)
{
int start=i,end=i;
while(start>=0&&end<s.length())
{
if(s.charAt(start)==s.charAt(end))
{
count=end-start+1;
start--;
end++;
}
else break;
}//长度为奇数的回文串
if(ans.length()<(count<palindrome(s,i).length()?palindrome(s,i).length():count))
{
ans=count<palindrome(s,i).length()?palindrome(s,i):s.substring(start+1,end);
}
}
return ans;
}
}