小程序(十三)求一个字符串的最大回文子串

例如:

输入 abcdefedaaa,输出 defed

输入abcdeffedaaa,输出deffed

我们要考虑,最大子串的奇偶情况。


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void huiwen(char s[],int len, char output[])
{
  int i,j,max=0;
  int x,y;
  for(i=0;i<len;i++)
  {
	  for(j=0;i-j>0&&i+j<len;j++)
	  {
	   if( s[i-j]!=s[i+j] )
               break;
           if(j*2+1>max)
	   {
	       max = j*2+1;
               x = i-j;
	       y = i+j;
	    }
	  }
 
	  for(j=0;i-j>0&&i+j+1<len;j++)
	  {
	    if( s[i-j]!=s[i+j+1])
	       break;
	    if(j*2+2>max)
	    {
	       max = j*2+2;
	       x = i-j;
	       y = i+j+2; 
	     }
	  }
  }




  for(int k=x;k<=y;k++)
	  *output++ = s[k];
  *output = '\0';

}

int main()
{
  char array[] = "abcdeffedabade"; 
  int len = strlen(array);
  char *output = (char*)malloc(sizeof(char)*len);
  huiwen(array,len, output);
  printf("%s",output);
  return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值