DreamJudge-1261-字符串排序3

1.题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

先输入你要输入的字符串的个数。然后换行输入该组字符串。每个字符串以回车结束,每个字符串少于一百个字符。 如果在输入过程中输入的一个字符串为“stop”,也结束输入。 然后将这输入的该组字符串按每个字符串的长度,由小到大排序,按排序结果输出字符串。

输入输出格式

输入描述:

字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.

输出描述:

可能有多组测试数据,对于每组数据,
将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。

根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。
测试数据有多组,注意使用while()循环输入。

输入输出样例

输入样例#:

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

题目来源
北京大学机试题

2.题解

2.1 字符串处理函数 + 排序

思路

注意下如果使用cin作为while条件,要手动去除换行符

代码

#include<bits/stdc++.h>
using namespace std;

int main(){
	string input;
	vector<string> ans;
	int cnt;
//	while(getline(cin, input) && !input.empty()){
//		int cnt = stoi(input);
	while(cin >> cnt){
		cin.ignore(); // 忽略换行符,也可以用getchar(); 
		string str;
		vector<string> strs; 
		while(getline(cin, str) && str != "stop" && cnt-- != 0){
			strs.push_back(str);
		} 
		sort(strs.begin(), strs.end(), [](string str1, string str2){
			return str1.length() < str2.length();
		});
		for(string str : strs){
			ans.push_back(str);
		}
	} 
	for(string str : ans){
		cout << str << endl;
	}
	return 0;
}
posted @   DawnTraveler  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示