题目:输入一个字符串,按照ASCII码升序重排后输出。
当时没写好,回去后又写了下。

解决方案 »

  1.   


    /**
     * @author:fulton_xc
     * Date: 22 Dec. 2008
     */
    package test;import java.util.ArrayList;
    import java.util.HashMap;public class sortStr { /**
     * @param args
     */
    public static void main(String[] args) {
    String str = "acbjhgkklhgfghhfasfaflhkackhggkccvbdsfjhdd";
    String str2 = sortString(str);
    System.out.print(str);
    System.out.print(str2);
    } public static String sortString(String str) {
    HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
    ArrayList<Character> al = new ArrayList<Character>();
    char[] a = str.trim().toCharArray();
    for (int i = 0; i < a.length; i++) {
    if (hm.containsKey(a[i])) {
    hm.put(a[i], hm.get(a[i]) + 1);
    } else {
    hm.put(a[i], 1);
    al.add(a[i]);
    }
    }
    //冒泡排序
    for (int i = 1; i < al.size(); i++) {
    for (int j = 0; j < al.size() - i; j++) {
    if (al.get(j) > al.get(j+1)) {
    Character t = al.get(j);
    al.set(j, al.get(j+1));
    al.set(j+1, t);
    }
    }
    }
    //重排
    int j = 0;
    for (int i = 0; i < al.size(); i++) {
    for (int k = 0; k < hm.get(al.get(i)); k++) {
    a[j] = al.get(i);
    j++;
    }
    }
    return String.copyValueOf(a);
    }}
      

  2.   

    今天早上看到这个帖子,也自己写一下,练练手感。import java.util.Scanner;public class SortString { // 接受字符串参数,返回按ASCII码值升序字符串
    public static String sortString(String str) {
    char[] ch = str.toCharArray();
    int length = ch.length;
    // 冒泡排序
    for (int i = length - 1; i > 0; i--)
    for (int j = 0; j < i; j++)
    if (ch[i] < ch[j])
    swap(ch, i, j);
    return new String(ch);
    } // 实现交换
    private static void swap(char[] ch, int i, int j) {
    char temp = ch[i];
    ch[i] = ch[j];
    ch[j] = temp;
    } // 打印出ASCII码,验证是否正确
    private static void printAscii(String str) {
    char[] ch = str.toCharArray();
    for (int i = 0; i < ch.length; i++)
    System.out.print((int) ch[i] + ",");
    } public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);// 接受输入的字符串
    String str = sc.nextLine();// 读取字符串
    String sortStr = sortString(str);// 调用字符串排序,返回字符串
    System.out.println(sortStr);// 打印返回出排序后的字符串
    printAscii(sortStr);// 打印ASCII码值验证是否正确
    }
    }
      

  3.   


    public class SortString {
    public static String sortStr(String str){
    StringBuilder retStr = new StringBuilder();
    char[] strArr = str.toCharArray();
    Arrays.sort(strArr);
    for(int i = 0; i < strArr.length; i++){
    retStr.append(strArr[i]);
    }
    return retStr.toString();
    }

    public static void main(String[] args){
    String str = "aAbddjfhfjGHHJkjhkhBcC";
    System.out.println(SortString.sortStr(str));
    }
    }
      

  4.   

    Arrays.sort()对基本类型采用快速排序,如果不加Comparator的话按自然排序,对CHAR来说就是按ASCII码来排的
      

  5.   

    用一个int型的数组存放字符的asc码
    数组排序
    转化为char类型后打印输出