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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了