【中级】字符串运用-密码截取

来源:互联网 发布:神优化单机游戏低配 编辑:程序博客网 时间:2024/05/20 19:16

题目表述

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



输入描述:

输入一个字符串



输出描述:

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


输入例子:
ABBA

输出例子:
4
牛客上未通过  不过华为OJ 通过了   先记录下然后改善
#include<iostream>  #include<string> using namespace std;bool check(string s){//判断字符串是否为对称密码if (s.size() % 2 == 0){int a = 0,b=s.size()-1;while (a < b){if (s[a] != s[b])return false;else { a++; b--; }}return true;}else{int a = 0, b = s.size() - 1;while (a!=b){if (s[a] != s[b])return false;else { a++; b--;}}return true;}}int main(){string s;while (getline(cin,s)){int max = 1;if (s.size() == 1)cout << '1'<< endl;else{for (int i = 1; i < s.size(); i++){      //判断以每个字符结尾的字符串的所有情况for (int j = 0; j < i; j++){string tem = s.substr(j,i-j+1);if (check(tem)){max = (max>tem.size() ? max : tem.size());}}}cout << max << endl;}}return 0;}


0 0
原创粉丝点击