首页 > 其他分享 >字符串排序III【北京大学考研机试题】

字符串排序III【北京大学考研机试题】

时间:2023-03-06 17:00:09浏览次数:53  
标签:good 试题 stop 字符串 include III getline 输入 考研

字符串排序III

按要求输入字符串进行排序并输出。

输入格式
输入包含多组测试数据。

每组测试数据,第一行包含整数 N,表示共有 N 个字符串。

接下来,会将这 N 个字符串,按一行一个的形式给出。

但是,逐个给出的过程中,有可能会直接输入一行 stop,表示该组数据停止输入,此时会直接开始下一组数据的输入。

也就是说,每组数据给出的字符串个数,可能不到 N 个。

另外,stop 不算给出的字符串。

输出格式
对于每组数据,将给出的所有字符串按长度由小到大排序输出。

每行输出一个字符串,注意不要将 stop 算在内。

数据范围
每个输入最多包含 100 个数据。
每组数据最多包含 100 个字符串,每个字符串的长度不超过 100,且不同字符串长度互不相同。

输入样例:
5
sky is grey
cold
very cold
stop
3
it is good enough to be proud of
good
it is quite good
输出样例:
cold
very cold
sky is grey
good
it is quite good
it is good enough to be proud of

代码

点击查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;

#define X first
#define Y second

typedef pair<int,int> pii;
typedef long long LL;
const char nl = '\n';
const int N = 1e6+10;
const int M = 2e5+10;
int n,m;

//多组测试数组->初始化
//

bool cmp(string a,string b){
	return a.size() < b.size();
}

void solve(){
	while(cin >> m){
		vector<string> v;
		string t;
        getline(cin,t); 
        //注意要先去除一行空行,getline会读入之前的'\n',而后面的'\n'会被读入并丢弃,因此不影响后面的getline
		while(m --){
			string s;
			getline(cin,s);
			if(s == "stop")break;
			v.push_back(s);
		}
		sort(v.begin(), v.end(),cmp);
		for(int i = 0; i <= v.size() - 1; i ++ ){
			cout << v[i];
			cout << nl;
		}
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);

	solve();
}

小结

  1. 注意要先去除一行空行,getline会读入之前的'\n',而后面的'\n'会被读入并丢弃,因此不影响后面的getline

标签:good,试题,stop,字符串,include,III,getline,输入,考研
From: https://www.cnblogs.com/J-12045/p/17184499.html

相关文章

  • 字符串排序【北京大学考研机试题】
    字符串排序输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果。输入格式一行,一个字符串。输出格式一行,排序后......
  • 【DFS】LeetCode 216. 组合总和 III
    题目链接216.组合总和III思路与【DFS】LeetCode40.组合总和II思路一致,只不过candidates数组在题目中明确说明了只有1到9。代码classSolution{private......
  • 前端面试题(第 3 期)
    你好,欢迎大家在有空的时候做客【江涛学编程】,我是小编岩家兴,很高兴认识你!先做十题压压惊●这位选手,你有了解过ETag吗?那你讲讲304缓存原理吧?●这位选手,请你聊聊你所知......
  • #yyds干货盘点# LeetCode面试题:组合总和
    1.简述:给你一个无重复元素的整数数组 candidates和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target的所有 不同组合,并以列表形式返回。你......
  • 3.2 L5-NOIP训练29 测试题解
    3.2L5-NOIP训练29测试题解码创Contest#530(出题人写中文也要句句都打分号吗!!)A.老司机的压缩包(数论)题面老司机最近得到了一个奇怪的压缩包,听说里面有十分厉害的东西......
  • 进制转换2【清华大学考研机试题】
    进制转换2将M进制的数X转换为N进制的数输出。输入格式第一行包括两个整数:M和N。第二行包含一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制......
  • 3 月 1 日测试题解
    3月1日测试题解T1题意给你一个\(n\timesm\)的01矩形,求一个面积最大的不包含数字1的矩形。\(n,m\le1000\)。思路首先,这道题的数据水到了什么程度呢?\(O(n......
  • #yyds干货盘点# LeetCode面试题:外观数列
    1.简述:给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符......
  • Java应用【XIII】使用Apache Spark MLlib构建机器学习模型【上】
    如果您觉得本博客的内容对您有所帮助或启发,请关注我的博客,以便第一时间获取最新技术文章和教程。同时,也欢迎您在评论区留言,分享想法和建议。谢谢支持!​​一、引言1.1Spark......
  • 指针和数组笔试题解析
    在大多数情况下,数组名就是数组首元素的地址,但是有两种特殊情况:一、sizeof(数组名):当数组名单独放在sizeof内部,指的是整个数组二、&数组名:取的是整个数组的地址,但是结果和首......