华为OJ:字符串运用-密码截取

来源:互联网 发布:淘宝 心语星店 编辑:程序博客网 时间:2024/06/05 07:14

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

输入描述:
输入一个字符串

输出描述:
返回有效密码串的最大长度

输入例子:
ABBA

输出例子:
4

#include <iostream>#include <string>#include <set>#include <algorithm>using namespace std;bool  isEqual(string str){    int i;    int n = str.length();    for(i=0;i<n/2;++i)    {        if(str[i]!=str[n-1-i])            break;    }    if(i==n/2)         return true;    else         return false;}int main(){    string str;    int k = 0,i;    set<int>vec;    while(getline(cin,str))    {        vec.clear();        for(i=0;i<str.length();++i)        {            k = i;            while(k<=str.length())               {                  if(isEqual(str.substr(i,i+k)))                     {                        vec.insert(str.substr(i,i+k).length());                     }                 ++k;               }        }        set<int>::iterator it = vec.end();        it--;        cout<<*it<<endl;    }    return 0;}
0 0
原创粉丝点击