思路1:暴力破解三循环
首先定义判断字符串的子串是否是回文串的函数isFlag,然后双循环遍历,回文子串最小长度为1,因此maxLen定义为1,maxLen记录当前最大的回文子串长度,因为从字符串的头开始,begin定义为0,(j-i+1)为当前子串长度,如果当前子串长度大于当前最小回文子串长度(maxLen)并且当前子串是回文子串,才需要更新子串长度和子串的起始位置
class Solution {
public String longestPalindrome(String s) {
int len=s.length();
int begin=0;
int maxLen=1;
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
if((j-i+1)>maxLen&&isFlag(s,i,j))
{
begin=i;
maxLen=j-i+1;
}
}
}
return s.substring(begin,begin+maxLen);
}
private boolean isFlag(String s,int left,int right){
while(left<right)
{
if(s.charAt(left)!=s.charAt(right))
{
return false;
}
left++;
right--;
}
return true;
}
}
时间O(N^3)空间O(1)