华为OJ中级题-字符串运用-密码截取

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

void HWoj(){
	string a = "51233214",b;
	b = a;
	reverse(a.begin(), a.end());
	int st1 = 0, st2 = 0;
	int count = 0, MAXed = 0;
	int len = a.length();
	for (int i = 0; i < len; ++i){
		for (int j = 0; j < len; ++j){
			st1 = i; st2 = j;
			while (a[st1] == b[st2] && st1 < len&&st2 < len){
				st1++;
				st2++;
				++count;
			}
			if (count > MAXed)
				MAXed = count;
			count = 0;
		}
	}
	cout << MAXed;
}


你可能感兴趣的:(C++,华为)