题解 | #OJ在线编程常见输入输出练习场--字符串排序(2)#c++/python3/java
字符串排序(2)
https://ac.nowcoder.com/acm/contest/5657/I
链接:https://ac.nowcoder.com/acm/contest/5657/I
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
对输入的字符串进行排序后输出
打开以下链接可以查看正确的代码
https://ac.nowcoder.com/acm/contest/5657#question
输入描述:
多个测试用例,每个测试用例一行。
每行通过空格隔开,有n个字符,n<100
输出描述:
对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开
示例1
输入
复制
a c bb
f dddd
nowcoder
输出
复制
a bb c
dddd f
nowcoder
思路和心得
1.c++
(1) getline(cin, line)
#include <bits/stdc++.h>
using namespace std;
int main()
{
string line;
while (getline(cin, line))
{
stringstream ss; ss << line;
vector<string> words;
string word;
while (ss >> word)
words.push_back(word);
sort(words.begin(), words.end());
for (string word : words)
cout << word << ' ';
cout << endl;
}
return 0;
}(2) 也可以通过判断换行符 cin.get() == '\n'
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<string> words;
string word;
while (cin >> word)
{
words.push_back(word);
if (cin.get() == '\n')
{
sort(words.begin(), words.end());
for (string word : words)
cout << word << ' ';
cout << endl;
words.clear(); //清空
}
}
return 0;
}(3) 或者getchar() == '\n'
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<string> words;
string word;
while (cin >> word)
{
words.push_back(word);
if (getchar() == '\n')
{
sort(words.begin(), words.end());
for (string word : words)
cout << word << ' ';
cout << endl;
words.clear(); //清空
}
}
return 0;
}2.python3 [x for x in input().split()] 千年不变
while True:
try:
words = [x for x in input().split()]
words.sort()
for word in words:
print(word, end = ' ')
print()
except:
break3.java
import java.util.* ;
public class Main
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
while (scan.hasNextLine())
{
String [] words = scan.nextLine().split(" ");
Arrays.sort(words);
for (String word : words)
System.out.print(word + " ");
System.out.println();
}
}
}
查看3道真题和解析