题目:http://acm.hdu.edu.cn/showproblem.php?pid=1106
问题:
1.前面有5,后面有5,和中间多5的情况我处理了。
2.网友说多值输入的情况我也处理了
3.测试的结果都通过了
   测试用例:
505123123205077555
0 77 12312320
00005051231232050775
0 77 12312320
50512312320555507750005
0 77 12312320
505123123205077
0 77 12312320
05123123205077
0 77 12312320
051231232055077
0 77 12312320
5550
0
1155663535006555
3 6 11 663
10000000055051120
0 1120 100000000
4.但在提交时老是WR,有做过的,麻烦帮忙看看。多谢了!import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
/**
 * hdu 1106 排序
 * @author ps
 */
public class Hdu1106 { /**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
while((str = br.readLine()) != null){
Pattern p = Pattern.compile("5", 0);
String[] list = p.split(str, 0);
            List data = new ArrayList();
            for(int i = 0;i<list.length;i++){
             //5051231232050775当前面有5或者中间有55的形式时分割出来有空字符
             //要考虑把空串去掉
             if("".equals(list[i].trim())){
             continue;
             }
             int d = Integer.parseInt(list[i]);
                if(!data.contains(d)){
                 data.add(d);
                }
            }
            Collections.sort(data);
            for(int j=0;j<data.size();j++){
             System.out.print(data.get(j));
             if(j != data.size()-1){
             System.out.print(" ");
             }
            }
            System.out.println();
}
}
}

解决方案 »

  1.   

    要善用工具~
    import java.util.Scanner;
    import java.util.Set;
    import java.util.TreeSet;public class SplitByFive {    // in:0051231232050775
        // out:0 77 12312320
        public static void main(String[] args) {
            String in = "0051231232050775";
            Scanner scanner = new Scanner(in);
            Set<Integer> map = new TreeSet<Integer>();
            scanner.useDelimiter("5");
            while(scanner.hasNextInt()){
                map.add(scanner.nextInt());
            }
            System.out.println(map);
        }
    }
      

  2.   

    还是1#省事,补全后:public class Main {
        /**
         * hdu 1106 排序
         * @author ps
         */
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String str = null;
            while ((str = br.readLine()) != null) {
                Scanner scanner = new Scanner(str.trim());
                Set<Integer> map = new TreeSet<Integer>();
                scanner.useDelimiter("5");
                while (scanner.hasNextInt()) {
                    map.add(scanner.nextInt());
                }
                Iterator<Integer> it= map.iterator();//输出
                while(it.hasNext()){
                    System.out.print(it.next());
                    if(it.hasNext())
                        System.out.print(" ");
                }
            }
        }
    }
      

  3.   

    public class Hdu1106 { public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str = null;
    String data[] = null;
    int tempA,tempB;
    while ((str = br.readLine()) != null) {
    data = str.replaceAll("5+", " ").trim().split(" ");
    for (int i = 0; i < data.length; i++) {
    for (int j = i + 1; j < data.length; j++) {
    if ((tempA=Integer.parseInt(data[i])) > (tempB=Integer.parseInt(data[j]))) {
    data[j] = (tempA==0?0:tempA)+"";
    data[i] = (tempB==0?0:tempB)+"";
    }
    }
    }
    for (String string : data) {
    System.out.println(string);
    }
    }
    }
    }
      

  4.   


    省是省事,不过我还是觉得那个scanner在输入时还是有点麻烦。
    也许是我不熟悉它的原因吧。
      

  5.   

    可能是你输出的时候,他要的是int类型,但是你给的是string类型的,没有匹配对
      

  6.   

    import java.util.*;
    public class Main
    {
    public static void main(String a[])
    {
    Scanner scan=new Scanner(System.in);
    while(scan.hasNext())
    {
    String in=scan.next(),out[]=in.split("5");
    int ans[]=new int[out.length],len=0;
    for (int i=0;i!=out.length;++i)
    {
    if (out[i].length()!=0)
    {
    ans[len++]=Integer.parseInt(out[i]);
    }
    }
    Arrays.sort(ans,0,len);
    for (int i=0;i<len-1;++i) System.out.print(ans[i]+" ");
    System.out.println(ans[len-1]);
    }
    }
    }
      

  7.   

    LZ你难道不考虑输入的数据过大,比int , long这些数据类型的最大值都大的??
      

  8.   

    给你个任何数值,没范围限制的:import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.math.BigInteger;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Comparator;public class Test_2 {
    public static void main(String[] args) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
    String str = br.readLine();
    String[] s = str.split("5");
    ArrayList<String> al = new ArrayList<String>();
    for(int i = 0; i <s.length;i++) {
    if(!s[i].equals("")) {
    al.add(s[i]);
    }
    }
    s = new String[al.size()];
    Arrays.sort(al.toArray(s), new Comparator<String>() {
    public int compare(String o1, String o2) {
    return new BigInteger(o1).compareTo(new BigInteger(o2));
    }
    });
    for(String s_2:s)
    System.out.print(s_2+"  ");
    } catch (IOException e) {
    e.printStackTrace();
    }

    }
    }
      

  9.   

    正确的程序import java.util.Arrays;
    import java.util.Scanner;public class Main1106 {
    public static void main(String[] args){
    String str;
    Scanner cin = new Scanner(System.in);
    while(cin.hasNext()){
    str = cin.next();
    String[] str1 = str.split("5");
    String[] str2 = new String[str1.length];
    int cn = 0;
    for(int i=0;i<str1.length; i++){
    if(!str1[i].equals("")){
    str2[cn++]=str1[i];
    }
    }
    int [] arr = new int[cn];
    for(int i=0;i<cn; i++){
    arr[i] = Integer.parseInt(str2[i]);
    }
    Arrays.sort(arr);
    for(int i=0; i<cn; i++){
    if(i!=arr.length-1){
    System.out.print(arr[i]+" ");
    }else{
    System.out.println(arr[i]);
    }
    }
    }
    }
    }
    主要是split()切的时候,第一串可能是空串。