怎么将String s = "12asc3a";通过排序后得到3,12,acs结果?
注:连着的数字算成一个数字。

解决方案 »

  1.   

    使用冒泡排序,12asc3a:1和2要当成12来使用,先排列数字然后排列字母。
      

  2.   

    弄一个FOR循环,挨个字符检查,凑足一个数字截一下,存到一个数字链表里,凑足字母截一下,存到一个字母链表里,然后调用显示,先显示数字链表,然后显示字母链表就可以了。
    注:我也是新学JAVA的,以前只是研究点面向过程的算法,面向对象的编程学习中,希望说的对你有用,呵呵
      

  3.   

    不知道排序规则,大概是这样吧,猜的
    并且不知道顶楼的那个“a”到哪里去了,下面代码中没有去掉最后的“a”
    public static void main(String args[]) {
    // 拆分为数组
    String s = "aa12asc3af89ds7f8sdfs";
    String[] array = s.split("(?<=[^\\d]+)");
    String[] subArray = null;
    List list = new ArrayList();
    for (int i = 0; i < array.length; i++) {
    subArray = array[i].split("(?<=\\d+)");
    for (int j = 0; j < subArray.length; j++) {
    list.add(subArray[j]);
    }
    }

    // 排序
    Object[]result = list.toArray();
    Arrays.sort(result, new Comparator(){
    public int compare(Object o1, Object o2) {
    if(o1.toString().matches("\\d+") && o2.toString().matches("\\d+")){
    long long1 = Long.parseLong(o1.toString());
    long long2 = Long.parseLong(o2.toString());
    if(long2 < long1){
    return 1;
    }else if(long2 == long1){
    return 0;
    }else{
    return -1;
    }
    }else{
    return o1.toString().compareTo(o2.toString());
    }
    }
    });

    // 打印
    for (int i = 0; i < result.length; i++) {
    System.out.println(result[i]);
    }
    }
      

  4.   

    测试完毕了,最后的排序好的结果,al和bl只等着楼主处理了,是join到一起,还是cout出来 String a = "12asc3a34bb6";
    ArrayList<String> al = new ArrayList<String>();
    ArrayList<String> bl = new ArrayList<String>();
    Collections.addAll(al, a.split("[0-9]+"));
    Collections.addAll(bl, a.split("[a-zA-Z]+"));
    al.remove("");
    bl.remove("");
    Collections.sort(al);
    Collections.sort(bl, new Comparator(){
    @Override
    public int compare(Object arg0, Object arg1) {
    return new Integer((String)arg0).compareTo(new Integer((String)arg1));
    }});




    System.out.println("Pause!~");