<pre name="code" class="cpp">#include<iostream>
#include<vector>
#include<string>
using namespace std;
//回文字符串判断
char*changeString(char*ptr,char*ptrch)
{
int len = strlen(ptr);
ptrch[0] = '#';
for (int i = 0; i < len; i++)
{
ptrch[2 * i + 1] = ptr[i];
ptrch[2 * i + 2] = '#';
}
return ptrch;
}
int numOfSpecialString(char*ptrch)
{
int maxlen = 0;
int len = strlen(ptrch);
for (int i = 2; i < len-1; i ++)
{
int cont = 0;
int proIndex ;
int behIndex ;
if (ptrch[i] == '#')
{
proIndex = i - 1;
behIndex = i + 1;
}
else
{
proIndex = i - 2;
behIndex = i + 2;
}
while ((proIndex != 1 || proIndex != 0) && (behIndex != len - 2 || behIndex != len - 1))
{
if (ptrch[proIndex] == ptrch[behIndex])
{
proIndex -= 2;
behIndex += 2;
cont+=2;
}
else
break;
}
if (ptrch[i] != '#')
cont++;
if (maxlen < cont)
maxlen = cont;
}
return maxlen;
}
void main()
{
int num;
vector<int> vs;
cin >> num;
int count = num;
while (count != 0)
{
char a[100];
cin >> a;
char b[10000] = "";
char*ptrch = changeString(a, b);
vs.push_back(numOfSpecialString(ptrch));
//cout << numOfSpecialString(ptrch);
count--;
}
for (int i = 0; i < num; i++)
{
cout << vs[i]<<endl;
}
system("pause");
}

2391

被折叠的 条评论
为什么被折叠?



