/* 描述
题目描述:
字符串有些是对称的,有些不是对称的,请将那些对称的字符串安从小到大的顺序输出,
字符串先以长度论大小,如果长度相等,再以ASCII码值为排序标准;
输入:
输入一个n,表示接下来有n组字符串,串长<=256; n<=1000;
输出:
根据每个字符串,输出对称的那些串,并且要求按从小到大的顺序输出;
样例输入
7
123321
123454321
123
321
sdfsdfd
\\dd\\
121212
样例输出
123321
\\dd\\
123454321*/
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool check(string s)
{
unsigned long len = s.length();
if(len % 2 == 0)
for(int i = 0 ; i < len / 2 - 1 ; i++)
if(s[i] != s[len - 1 - i]) return false;
if(len % 2 != 0)
for(int i = 0 ; i < len / 2 - 2; i++)
if(s[i] != s[len - 1 - i]) return false;
return true;
}
struct cmp
{
bool operator()(const string &s1,const string &s2)
{
return s1.length()!=s2.length()?s1.length()<s2.length():s1<s2;
}
};
int main()
{
vector<string> v;
vector<string>::iterator iter;
int n;
string s;
cin >> n;
for(int i = 0; i < n ; i++)
{
cin >> s;
//现在需要判断是否是对称的,对称就进入v
if(check(s))
v.push_back(s);
}
sort(v.begin(),v.end(),cmp());
for(iter = v.begin();iter != v.end();iter++)
{
cout << *iter << endl;
}
return 0;
}
STL之vector对称字符串输出
最新推荐文章于 2024-04-01 11:28:49 发布