Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
有两个测列没有通过,应该是空字符串判断
#include<iostream>
#include<string>
#include<cassert>
using namespace std;
int main()
{
string s1;
int ct[3]={0,0,0};
cin>>s1;
if (s1.empty()!=0)
{
cout<<0<<endl;
return 0;
}
int len=s1.size();
for (int i=0,j=len-1;i<len&&j>=0;)
{
if (s1[i]==s1[j])
{
i++;
j--;
ct[0]++;
}
else
{
ct[0]=0;
i++;
j=len-1;
}
}
for ( i=0,j=len-1;i<len&&j>=0;)
{
if (s1[i]==s1[j])
{
i++;
j--;
ct[1]++;
}
else
{
ct[1]=0;
j--;
i=0;
}
}
for ( i=0,j=len-1;i<len&&j>=0;)
{
if (s1[i]==s1[j])
{
i++;
j--;
ct[2]++;
}
else
{
i++;
j--;
}
}
int max=ct[0];
if (max<ct[1])
{
max=ct[1];
}
if (max<ct[2])
{
max=ct[2];
}
cout<<max<<endl;
return 0;
}
有两个测列没有通过,应该是空字符串判断