题意:给出一个数字串,数据5表示空格,将数字从小到大排列
代码如下:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.StreamTokenizer;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class Main implements Runnable{
private static boolean DEBUG = false;
private static StreamTokenizer cin;
private static PrintWriter cout;
private String s;
private void init()
{
try {
if (DEBUG)
{
cin = new StreamTokenizer(new BufferedReader(new FileReader("d:\\program\\intelj\\spoj\\src\\spoj.txt")));
}
else
{
cin = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
}
cin.resetSyntax();
cin.wordChars('0', '9');
cin.whitespaceChars(0, ' ');
cout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
}
catch(IOException e)
{
e.printStackTrace();
}
}
private String next()
{
try
{
cin.nextToken();
if (cin.ttype == StreamTokenizer.TT_EOF) return null;
else if (cin.ttype == StreamTokenizer.TT_WORD) return cin.sval;
else return null;
}
catch(IOException e)
{
e.printStackTrace();
return null;
}
}
private void input()
{
s = next();
}
private void solve()
{
String[] strs = s.split("5+");
List<Integer> nums = new ArrayList<>();
for (int i = 0; i < strs.length; i++)
{
if ("".compareTo(strs[i]) != 0)
{
nums.add(Integer.parseInt(strs[i]));
}
}
Collections.sort(nums);
for (int i = 0; i < nums.size(); i++)
{
if (i != 0) cout.print(" ");
cout.print(nums.get(i));
}
cout.println();
cout.flush();
}
public void run()
{
init();
s = next();
while (s != null)
{
solve();
s = next();
}
}
public static void main(String[] args)
{
new Thread(new Main()).start();
}
}