题目链接:https://leetcode.cn/problems/longest-palindromic-substring/
思路:起始位置为初始位置向右走,即第一次a为起始位置,第二次b为起始位置
结束位置从末尾向左走,即第一次c为末尾,第二次b为末尾,直到找到回文字符串
因此只需要将字符串,起始位置和终止位置传给一个判断是否为回文字符串的函数即可,代码为:
bool IsPalindrome(char* s,int left,int right)
{
while(left <= right)
{
if(s[left] == s[right])
{
left++;
right--;
}
else
{
return false;
}
}
return true;
}
char * longestPalindrome(char * s){
int lenstr = strlen(s);
int start = 0;
int final = 0;
for(int i = 0;i<lenstr;i++)
{
for(int j = lenstr-1;j>0;j--)
{
if(IsPalindrome(s,i,j) && j-i > final-start)
{
start = i;
final = j;
break;
}
}
}
char arr[final - start + 2];
arr[final - start + 1] = '\0';
return strncpy(arr,&s[start],final - start+1);
}