您的位置:首页 > 其它

华为机试——密码截获

2016-01-10 13:45 519 查看

题目描述:字符串运用-密码截获

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

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int MaxSubstr(const string &a,const string &b,string &c)
{
int start1,start2;
int count=0,Max=0;
for(int i=0;i<a.size();i++)
for(int j=0;j<b.size();j++)
{
start1=i,start2=j;

while(a[start1]==b[start2] && start1<a.size() && start2<b.size())
{
count++;
start1++;
start2++;
}
if(count>Max)
{
Max=count;
//begin=i;
c.clear();
c=a.substr(i,Max);//注意从i开始
}
count=0;
}
return Max;
}
int main()
{
string s1,s2;
cin>>s1;
s2=s1;
string s3;
//char* s3=new char[s1.size()+1];
reverse(s2.begin(),s2.end());
cout<<s2<<endl;
//int start;
int maxLength=MaxSubstr(s1,s2,s3);
cout<<s3<<":";
cout<<maxLength<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: