1926: 2018蓝桥杯培训-STL应用专题-day 2 vector作业题1

题目描述:

字符串有些是对称的,有些不是对称的,请将那些对称的字符串安从小到大的顺序输出,字符串先以长度论大小,如果长度相等,再以ASCII码值为排序标准;

输入:

输入一个n,表示接下来有n组字符串,串长<=256; n<=1000;

输出:

根据每个字符串,输出对称的那些串,并且要求按从小到大的顺序输出;

样例输入:

7
123321
123454321
123
321
sdfsdfd
\\dd\\
121212
样例输出:

123321
\\dd\\
123454321
// ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

vector<string> svec;

bool cmp(string a,string b)//提供给sort()函数一个比较的方法
{
	if (a.size() == b.size())
		return a < b;
	else
		return a.size() < b.size();
}

bool judge(string a)//如果a是回文,则返回值为真,否则为假
{
	string b;
	b = a;
	reverse(a.begin(), a.end());
	if (b == a)
		return true;
	else
		return false;
}

void myscanf(string a)//如果judge()函数返回值为真,则将a插入到svec数组的最后
{
	if (judge(a))
	{
		svec.push_back(a);
	}
}

int main()
{
	string a;
	int n;
	cin >> n;

	for (int i = 0; i < n; ++i)
	{
		cin >> a;
		myscanf(a);
	}

	sort(svec.begin(), svec.end(), cmp);

	vector<string>::iterator siter;

	for (siter = svec.begin(); siter != svec.end(); ++siter)
	{
		cout << *siter << endl;
	}

	return 0;
}



发布了91 篇原创文章 · 获赞 72 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览