1.双对称,例如aabbaa;
2.字符为偶数个,比如aabaa不符合;
3.第1个字符与第2个字符相同,第三个和第四个相同,依次类推(aabbccbbaa);
#include<bits/stdc++.h>
using namespace std;
string str;
bool Check( )
{
string tmp = str;
reverse( tmp.begin(), tmp.end() );
return str == tmp;
}
int main()
{
while( cin >> str )
{
int n = str.length();
if( ( n & 1 ) || ( Check( ) == false ) )
{
cout << "false" << endl;
continue;
}
string goal;
goal.clear();
int flag = 1;
for( int i = 1; i < n; i += 2 )
{
if( str[ i ] != str[ i - 1 ] )
{
flag = 0;
break;
}
goal += str[ i ];
}
if( flag ) cout << goal << endl;
else cout << "false" << endl;
}
return 0;
}
PS:
1.使用string.h中的strrev函数
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 char s[]="hello";
6 strrev(s);
7 puts(s);
8 return 0;
9 }
2.使用algorithm中的reverse函数
1 #include <iostream>
2 #include <string>
3 #include <algorithm>
4 using namespace std;
5 int main()
6 {
7 string s= "hello";
8 reverse(s.begin(),s.end());
9 cout<<s<<endl;
10 return 0;
11 }
这两个函数在我测试的时候出现了两种完全不同的情况
1.strrev函数只对字符数组有效,对string类型是无效的。
2.reverse函数是反转容器中的内容,对字符数组无效。