给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
思路:构造一个方法来判断字符串的回文,并注意奇偶性,如“aba”和“bb”,然后遍历整个字符串,设置max来保存方法返回的值,res跟新返回值中的较大值。
class Solution {
public String longestPalindrome(String s) {
String res ="";
if (s.length()<=1)
{
return s;
}
String m,n,max;
int l=s.length();
for(int i=0;i<s.length();i++)
{
m=compare(s,i,i);//奇数
n=compare(s,i,i+1);//偶数
if(m.length()>n.length())
max=m;
else {
max=n;
}
if(max.length()>res.length())
res=max;
}
return res;
}
static String compare(String s,int left,int right)
{
while(left>=0&&right<s.length()&&s.charAt(right)==s.charAt(left))
{
right++;
left--;
}
return s.substring(left+1,right);
}
}