leetcode
给你一个字符串 s,找到 s 中最长的回文子串。
C语言
暴力解法
遍历数组,固定住左端,然后从最右端往前找与固定住的字符相同的,再判断是否是回文串,不是的话继续往前找,一直找到固定住的那个字符,如果是回文子串,记录下长度以及固定住的那个字符的下标,然后跳出循环,进行下一个字符的循环。
char * longestPalindrome(char * s)
{
int left = 0,right = strlen(s);
int maxSize = 1;
int t = 0;
int start = 0;
if(right <= 1 )
return s;
for(left = 0;s[left]!='\0';left++)//从最左边开始遍历
{
t = 0;//判断是否有最大值替换;
if(right - left + 1 <= maxSize)
{
break;//如果数组剩余字符数量少于maxSize,直接跳出循环;
}
for(right = right-1;right>left;right--)//右边往前遍历数组;
{
if(s[left]==s[right])
{
for(int i = left,j = right;i <= j;i++,j--)
{
if(i == j||(i==j-1&&s[i]==s[j]))
{
if(maxSize<(right-left+1))
{
maxSize = right - left + 1;
start = left;
t = 1;//maxSize修改值之后退出此外层循环;
}
}
if(s[i]!=s[j])//判断是否是回文串
{
break;
}
}
}
if(t==1)
{
break;
}
}
right = strlen(s);
}
s[start + maxSize] = '\0';
return s+start;
}
这篇文章详细讲解了如何使用C语言暴力解法解决LeetCode上的最长回文子串问题,通过遍历字符串并动态调整最长回文串的长度,提供了一段实用的代码示例和理解过程。
1106

被折叠的 条评论
为什么被折叠?



