首页 > 代码库 > 华为测试 字符串运用-密码截取

华为测试 字符串运用-密码截取

Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?

输入一个字符串

返回有效密码串的最大长度

样例输入:abba

样例输出:4

#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str;
	cin>>str;
	string temp;
	int SIZE,BigLen=0;
	bool sign;
	for(string::size_type index1=0;index1!=str.size();++index1)
	{
		for(string::size_type index2=index1;index2!=str.size();++index2)
		{
			sign=1;
			temp.push_back(str[index2]);
			SIZE=temp.size();
			if(SIZE==1)
			{
				if(BigLen==0)
					++BigLen;
			}
			else
			if(SIZE>1)
			{
				for(string::size_type index3=0;index3!=SIZE/2;++index3)
				{
					if(temp[index3]!=temp[SIZE-1-index3])
						sign=0;
				}
				if(sign==1)
				{
					if(SIZE>BigLen)
						BigLen=SIZE;
				}
			}
			 
		}
		temp.clear();
	}
	cout<<BigLen<<endl;
	return 0;
}