用C语言的代码实现,4.给定一个字符串,输出所有长度至少为2的回文子串。回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如: aa、aba、abba、cccdeedccc都是回文字符串。 输入格式一个字符串,由字母或数字组成。长度500以内。 输出格式: 输出所有的回文子串,每个子串一行 子串长度小的优先输出,若长度相等,则按照其在输入字符串中的出现位置靠左的优先输出。 输入样例1: 123321125775165561 输出样例1: 33 11 77 55 2332 2112 5775 6556 123321 165561
时间: 2023-06-04 22:05:07 浏览: 112
以下是给定字符串的 C 代码实现,用中心扩展法找出所有的回文子串,并按要求输出:
#include <stdio.h>
#include <string.h>
#define MAXLEN 500
void printSubstr(const char *str, int start, int end) {
while (start <= end) {
putchar(str[start++]);
}
putchar('\n');
}
void findPalindrome(const char *str) {
int len = strlen(str);
if (len < 2) {
return;
}
int i, j, k;
for (i = 0; i < len - 1; i++) {
for (j = i, k = i; j >= 0 && k < len && str[j] == str[k]; j--, k++) {
if (k - j + 1 >= 2) {
printSubstr(str, j, k);
}
}
for (j = i, k = i + 1; j >= 0 && k < len && str[j] == str[k]; j--, k++) {
if (k - j + 1 >= 2) {
printSubstr(str, j, k);
}
}
}
}
int main() {
char str[MAXLEN + 1];
scanf("%s", str);
findPalindrome(str);
return 0;
}
阅读全文