题目
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example:
Input: "cbbd"
Output: "bb"
要找一个字符串中的最长回文字符串。
我用的比较简单但是最慢的方法,从长到短依次抽取子字符串,然后判断是否回文。
代码如下,已通过。
还有其他很好地方法,需要仔细探究
bool Palindrome(char *s,int a,int b)
{
bool answer=true;
while(a<b)
{
if(s[a]!=s[b])
{
answer=false;
break;
}
a++;b--;
}
return answer;
}
char* longestPalindrome(char* s)
{
int length=0,i;
while(s[length]!='\0')length++;
i=length-1;
while(i>=0)
{
for(int j=0;j<length-i;j++)
{
if(Palindrome(s,j,j+i)==true)
{
char * ans=(char *)malloc(sizeof(char)*(i+2));
for(int k=0;k<=i;k++)
ans[k]=s[k+j];
ans[i+1]='\0';
return ans;
}
}
i--;
}
return NULL;
}