手链问题
例如:
输入
ABBA
输出 AB
输入
ABBAABBA
输出 AB
#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
#include<string>
using namespace std;
bool Comp(string str1, string str2);
string GetResult(string s) {
int len = s.length();
if (len % 2!=0)
return s;
string s1, s2;
bool flag;
while (1)
{
s1 = s.substr(0, len / 2);//字符串截取
s2 = s.substr(len / 2, len / 2);
flag = Comp(s1, s2);//判断两个字符串是否对称
if (!flag)//不对称结束
break;
if (flag)//对称继续循环
{
len = len / 2;
s1.clear();
s2.clear();
}
}
string s3;
s3 = s1 + s2;
return s3;
}
bool Comp(string str1, string str2)
{
int len1 = str1.length();
int len2 = str2.length();
if (len1 != len2)
return false;
int i = 0;
int j = len2 - 1;
while (i <len1&&j>=0)
{
if (str1[i] != str2[j])
return false;
i++;
j--;
}
return true;
}
int main() {
string res;
string _s;
getline(cin, _s);
if (_s.length() <= 1000)
{
res = GetResult(_s);
cout << res << endl;
}
cin.get();
return 0;
}