题目描述 找出最长回文串 输入描述: 输入一行小写字母组成的字符串。 输出描述: 输出最先出现的最长回文串。 用c编写
时间: 2023-02-06 09:45:24 浏览: 101
回文串是指从左到右读和从右到左读都是一样的字符串。要求找出输入字符串中最长的回文串,并输出。
下面是一个用 C 语言实现的示例代码:
```
#include <stdio.h>
#include <string.h>
// 判断字符串 s 的第 i 个字符到第 j 个字符是否为回文串
int isPalindrome(char *s, int i, int j)
{
while (i < j)
{
if (s[i] != s[j])
return 0;
i++;
j--;
}
return 1;
}
int main()
{
char s[100];
scanf("%s", s);
int len = strlen(s);
int start = 0, end = 0;
for (int i = 0; i < len; i++)
{
for (int j = i + 1; j < len; j++)
{
if (isPalindrome(s, i, j) && j - i > end - start)
{
start = i;
end = j;
}
}
}
for (int i = start; i <= end; i++)
printf("%c", s[i]);
printf("\n");
return 0;
}
```
算法的时间复杂度是 O(n^2),其中 n 是字符串的长度。
上面的代码中,我们使用双重循环来枚举字符串中的每一个子串,再使用函数 isPalindrome 来判断这个子串是否为回文串。如果是,就更新最长回文串的起始位置和结束位置。最后,输出最长回文串即可。
阅读全文