怎么将AaCCBb排序成AaBbCC

解决方案 »

  1.   

    public static void main(String[] args) {
    String str="CcAaBb";
    char[] cs=str.toCharArray();
    A[] as=new A[cs.length];
    for(int i=0;i<cs.length;i++){
    as[i]=new A(cs[i],false);
    if(as[i].getX()>=90){
    as[i].setX((char)(as[i].getX()-32));
    as[i].setF(true);
    }
    }
    for(int i=0;i<as.length;i++){
    A a=new A();
    for(int j=0;j<i;j++){
    if(as[i].getX()<as[j].getX()){
    a=as[i];
    as[i]=as[j];
    as[j]=a;
    }
    }
    }

    for(int i=0;i<as.length;i++){
    if(as[i].isF()){
    as[i].setX((char) (as[i].getX()+32));
    }
    System.out.print(as[i].getX());
    }
    }}
    class A{
    private char x;
    private boolean f;
    public A(){

    }
    public A(char x,boolean f){
    this.x=x;
    this.f=f;
    }
    public char getX() {
    return x;
    }
    public void setX(char x) {
    this.x = x;
    }
    public boolean isF() {
    return f;
    }
    public void setF(boolean f) {
    this.f = f;
    }
      

  2.   

    public class T {
    public static void main(String[] args) { String str = "AEFDRYUcIaTBKGbcadetupolk"; char[] c_array = str.toCharArray();
    int[] c = new int[26];// 大写集合
    int[] u = new int[26];// 小写集合
    char temp = 0; System.out.println("原字符串:"+str);
    for (char ch : c_array) {
    if ((int) ch > 64 && (int) ch < 91) {// 大写储存
    if (c[ch - 'A'] >= 0) {
    c[ch - 'A'] += 1;
    } else {
    c[ch - 'A'] = 0;
    }
    } else if ((int) ch > 96 && (int) ch < 123) {// 小写储存
    if (u[ch - 'a'] >= 0) {
    u[ch - 'a'] += 1;
    } else {
    u[ch - 'a'] = 0;
    }
    } else {
    System.out.println("字符串不合法");
    }
    }

    str = "";// 清空str
    for (int i = 0; i < 26; i++) {
    for (int j = 0; j < c[i]; j++) {
    str+=((char)('A'+i));
    }
    for (int j = 0; j < u[i]; j++) {
    str+=((char)('a'+i));
    }
    }
    System.out.println("排序后为:"+str);
    }
    }
    楼主,我帮你写了一个
      

  3.   

    楼主,我写下我的思路,希望对你有帮助从代码中你可以看到我定义了两个数组,分别是存放大写字母每个字母出现的次数和小写字母每个字母出现的次数,因为大小写都是26位,所以我集合的大小定义的为26位. 例如'A'在大写集合中就是下标为0的那一位,如果'A'出现了2次,则c[0]=2;也就是说集合中的值就是对应下标的字母出现的次数,同理,小写也是这样.现在我分别得到了大写和小写各个字母出现的次数,只需要将他们组合起来就可以了,所以下面用到一个循环,循环次数为26次,即26个字母,按照大写在前小写在后的方式组合
      

  4.   

    最简单的方法是使用 SortedSet 这个接口来搞定!!!在 java.util.* 这个包里面。
    当然,如果你用数据结构里面的算法练练手也行。
      

  5.   

    如果你不想冒泡的话,就用这个先创建一个类package demo;import java.util.Comparator;public class StrCompare implements Comparator<String> { @Override
    public int compare(String o1, String o2) {
    String temp1 = o1.toLowerCase();
    String temp2 = o2.toLowerCase();
    if (temp1.equals(temp2)) {
    return o1.compareTo(o2);
    } else {
    return temp1.compareTo(temp2);
    }
    }
    }然后在排序时,这样写
    String s = "AaCcBb";
    char[] str = s.toCharArray();
    Arrays.sort(str,new StrCompare());
    System.out.println(Arrays.toString(str));
      

  6.   

    import java.util.Arrays;
    import java.util.Comparator;public class SoreIgnoreCase { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s = "AaCCBb";
    char[] c = s.toCharArray();
    Character[] cwrap = new Character[c.length];
    for (int i = 0; i < c.length; i++) {
    cwrap[i] = c[i];
    }
    CharComparator com = new CharComparator();
    Arrays.sort(cwrap, com); System.out.println("排序后 : " + Arrays.toString(cwrap));
    }}class CharComparator implements Comparator<Character> { public int compare(Character o1, Character o2) {
    // TODO Auto-generated method stub
    char c1 = Character.toLowerCase(o1.charValue());
    char c2 = Character.toLowerCase(o2.charValue());
    return c1 - c2;
    }}
      

  7.   

    import java.util.Arrays;
    import java.util.Comparator;public class SoreIgnoreCase { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String s = "AaCCBb";
    char[] c = s.toCharArray();
    Character[] cwrap = new Character[c.length];
    for (int i = 0; i < c.length; i++) {
    cwrap[i] = c[i];
    }
    CharComparator com = new CharComparator();
    Arrays.sort(cwrap, com); System.out.println("排序后 : " + Arrays.toString(cwrap));
    }}class CharComparator implements Comparator<Character> { public int compare(Character o1, Character o2) {
    // TODO Auto-generated method stub
    char c1 = Character.toLowerCase(o1.charValue());
    char c2 = Character.toLowerCase(o2.charValue());
    return c1 - c2;
    }}
      

  8.   


    import java.util.Arrays;
    import java.util.Comparator;
    public class Test {
    public static void main(String[] args) {
    String str="AaCCBb";
    char[] c1=str.toCharArray();
    Character[] c2=new Character[c1.length];
    for(int i=0;i<c1.length;i++)
    c2[i]=c1[i];
    Arrays.sort(c2, new Comparator<Character>(){
    public int compare(Character c1, Character c2) {
    char a=Character.toLowerCase(c1);
    char b=Character.toLowerCase(c2);
    if((a-b)==0)
    return 0;
    else if(a-b>0)
    return 1;
    else
    return -1;
    }
    });
    System.out.println(Arrays.toString(c2));

    }result:[A, a, B, b, C, C]