- 论坛徽章:
- 0
|
献丑了:)
#include <stdio.h>
#include <string.h>
int getMaxStr(const char* src,char* dest) {
int len=strlen(src);
int start=0;
int max=0,inc=0,add=0;
for(int i=0;i<len;i++) {
inc=len-i;
/*
对称的时候
*/
for(add=0;add<inc;add++) {
if(i-add<0) {
break;
}
if(src[i-add]!=src[i+add]) {
break;
}
}
inc=2*(add-1)+1;
if(max<inc) {
max=inc;
start=i-add+1;
}
/*
无中间值的对称
*/
inc=len-i-1;
for(add=0;add<inc;add++) {
if(i-add<0) {
break;
}
if(src[i-add]!=src[i+add+1]) {
break;
}
}
inc=2*add;
if(max<inc) {
max=inc;
start=i-add+1;
}
}
memset(dest,0,max+1);
strncpy(dest,src+start,max);
return max;
}
int main(int argc,char** argv) {
if(argc!=2) {
printf("Usage:%s 字符串\n",argv[0]);
return 0;
}
printf("输入的字符串为:[%s]\n",argv[1]);
int len=strlen(argv[1]);
char* dest=new char[len+1];
len=getMaxStr(argv[1],dest);
printf("结果为:[%s],长度为:[%d]\n",dest,len);
return 1;
}
[[i] 本帖最后由 fzbook 于 2007-11-1 14:44 编辑 [/i]] |
|