c写找出最先出现的最长回文串(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串)。
时间: 2023-05-21 22:01:07 浏览: 152
以下是一个 C 语言程序,用于查找给定字符串中的最长回文子串:
#include <stdio.h>
#include <string.h>
int max(int a, int b) {
return a > b ? a : b;
}
void findLongestPalindrome(char *str) {
int n = strlen(str);
int maxLength = 1;
int start = 0;
int low, high;
for (int i = 1; i < n; ++i) {
// 查找偶数长度的回文子串
low = i - 1;
high = i;
while (low >= 0 && high < n && str[low] == str[high]) {
if (high - low + 1 > maxLength) {
maxLength = high - low + 1;
start = low;
}
--low;
++high;
}
// 查找奇数长度的回文子串
low = i - 1;
high = i + 1;
while (low >= 0 && high < n && str[low] == str[high]) {
if (high - low + 1 > maxLength) {
maxLength = high - low + 1;
start = low;
}
--low;
++high;
}
}
printf("最长回文子串是:");
for (int i = start; i < start + maxLength; ++i) {
printf("%c", str[i]);
}
printf("\n");
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
findLongestPalindrome(str);
return 0;
}
对于输入的字符串,该程序将输出最长的回文子串。
阅读全文