筛选出对称字符串,然后将其排序。
输入样例:
123321
123454321
123
321
sdfsdfd
121212
\\dd\\
输出样例
123321
\\dd\\
123454321
#include<fstream>
#include<iostream>
#include<string>
#include<set>
using namespace std;
bool isSymmetry(string);//判断字符串是否为对称
struct strComp{//将字符串用set进行排序
bool operator()(const string &s1, const string &s2){
if (s1.length() != s2.length())
return s1.length() < s2.length();
else
return s1 < s2;
}
};
int main(){
ifstream cin("data.txt");
string str;
set<string, strComp> strSet;
while(cin >> str){
if (isSymmetry(str))
strSet.insert(str);
}
for(set<string, strComp>::iterator it = strSet.begin(); it != strSet.end(); ++it)
cout << *it << endl;
return 0;
}
bool isSymmetry(string str){
int i = 0;
int j = str.length() - 1;
bool flag = true;
while(i <= j){
if (str[i++] != str[j--]){
flag = false;
break;
}
}
return flag;
}