天天看點

關于c++最大回文的字元串長度

#include<iostream>

#include <string >

using namespace std;

int maxMiddle(char a[] , int index)

  int length = 1; //最長的子字元串長度 

   int j = 1; //前後移動的指針

   int len=(int)strlen(a);

   while ((a[index - j] == a[index + j]) && (index - j) >= 0 && (index + j)<len)

   { 

     length += 2; 

        j++; 

    } 

   return length; 

}

int maxMirror(char a[] ,int index)

{

  int len=(int)strlen(a);

  int length = 0; //最長的子字元串長度

  int j = 0; //前後移動的指針

  while ((a[index - j] == a[index + j + 1]) && (index - j) >= 0 &&(index + j + 1)<len)

  {

   length += 2;

   j++;

  }

  return length;

 }

int jieguo(char a[])

 {

  int len=(int)strlen(a);

  if (len == 0)

   return 0;

  int maxLength = 0;

  for (int i = 0; i < len; i++)

  {

   int temp =0;

   int length1 = maxMiddle(a, i);

   int length2 = maxMirror(a, i);

   temp = (length1 > length2) ? length1 : length2;

   if (temp > maxLength)

    maxLength = temp;

  }

  return maxLength;

 }

int main()

{

 char a[100];

 cout<<"請輸入字元串:"<<endl;

 scanf("%s",a);

 int m=jieguo(a);

 cout<<"最大字元串長度是:"<<m<<endl;

 system("pause");

 return 0;

}