您的位置:首页 > 其它

求最长回文字符串并原样输出

2011-06-30 09:38 190 查看
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXN 5000+10
char buf[MAXN], s[MAXN];
int p[MAXN];
int main(void) {
int n, m = 0, max = 0, x, y;
int i, j;
fgets(buf, sizeof(s), stdin);
n = strlen(buf);
for (i = 0; i < n; i++) {
if (isalpha(buf[i])) {
p[m] = i;
s[m++] = toupper(buf[i]);
}
}
for(i=0;i<m;i++){
for(j=0;i-j>=0&&i+j<m;j++){
if(s[i-j]!=s[i+j]) break;
if(j*2+1>max){
max=j*2+1;
x=p[i-j];
y=p[i+j];
}
}
for(j=0;i-j>=0&&i+j+1<=m;j++){
if(s[i-j]!=s[i+j+1]) break;
if(j*2+2>max){
max=j*2+2;
x=p[i-j];
y=p[i+j+1];
}
}
}
for(i=x;i<=y;i++){
printf("%c",buf[i]);
}
printf("/n");
return EXIT_SUCCESS;
}
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  include c