网站地图怎么用,网页版梦幻西游五色石组合,6wordpress,网络电子商务购物网站问题描述#xff1a;给你一个字符串s,找到s中最长的回文子串
暴力求解#xff1a;通过两个循环遍历所有的子串#xff0c;找到最长的那个子串并进行记录后返回
Boolean isPalindrome(String s,int indexStart,int indexEnd)
{
if(indexStartindexEnd)
{
return true;
}
in…问题描述给你一个字符串s,找到s中最长的回文子串
暴力求解通过两个循环遍历所有的子串找到最长的那个子串并进行记录后返回
Boolean isPalindrome(String s,int indexStart,int indexEnd)
{
if(indexStartindexEnd)
{
return true;
}
int startindexStart;
int endindexEnd;
while(endstart)
{
if(s.charAt(end)!s.charAt(start))
{
return false;
}
}
return true;
}public String maxLengthSubString(String s)
{
int start0;
int end0;
int maxInteger.MIN_VALUE;
for(int i0;is.length();i)
{
for(int ji;js.length;j)
{
if(isPalindrome(s,i,j))
{
if((j-i1)max)
{
starti;
endj;
maxMath.max((j-i1),max);
}
}
}
}
return s.substring(start,end1);
}
动态规划求解定义dp[i][j]为以[i,j]为头尾的字符串是否为回文子串如果s.charAt(i)s.charAt(j)则dp[i][j]dp[i-1][j-1](需要考虑j-i1的情况)
public String maxPalindrome(String s)
{
Boolean[][]dpnew Boolean[s.length()][s.length()];
dp[0][0]1;
int start;
int end;
int maxInteger.MIN_VALUE;
for(int i1;is.length();i)
{
for(int ji-1;j0;j--)
{
if(s.charAt(i)s.charAt(j))
{
if(j-i1)
{
dp[i][j]true;
if(dp[i][j]max)
{
maxMath.max(j-i1,max);
starti;
endj;
}
}else
{
dp[i][j]dp[i-1][j-1];
if(dp[i][j]max)
{
maxMath.max(j-i1,max);
starti;
endj;
}
}
}
}
}
return s.substring(i,j1);
}
中心扩散法求解对于每个元素都可以以其为中心点进行寻找还有一种情况是偶数需要判断前一个字符与其是否相等从而进行偶数的判断
private int isOddPalindrome(String s,int index)
{
int leftindex-1;
int rightindex1;
int count1;
while(left0rights.length())
{
if(s.charAt(left)s.charAt(right))
{
count;
}
}
return count;
}
private int isEvenPalindrome(String s,int index)
{
int count2;
int leftindex-2;
int rightindex1;
while(left-0rights.length())
{
if(s.charAt(left)s.charAt(right))
{
count;
}
}
return count;
}public String maxPalindrome(String s)
{
int max1;
int start0;
int end0;
for(int i0;is.length;i)
{
int OcountisOddPalindrome(s,i);
if(Ocountmax)
{
maxOcount;
starti-Ocount1;
endiOcount1;
}
if(s.charAt(i)s.charAt(i-1))
{
int EcountisEvenPalindrome(s,i);
if(Ecountmax)
{
maxEcount;
starti-Ecount1;
endiEcount1-1;
}
}
}
return s.substring(start,end1);
}