急!!!!java 排序问题 怎么将AaCCBb排序成AaBbCC 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; } 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); }}楼主,我帮你写了一个 楼主,我写下我的思路,希望对你有帮助从代码中你可以看到我定义了两个数组,分别是存放大写字母每个字母出现的次数和小写字母每个字母出现的次数,因为大小写都是26位,所以我集合的大小定义的为26位. 例如'A'在大写集合中就是下标为0的那一位,如果'A'出现了2次,则c[0]=2;也就是说集合中的值就是对应下标的字母出现的次数,同理,小写也是这样.现在我分别得到了大写和小写各个字母出现的次数,只需要将他们组合起来就可以了,所以下面用到一个循环,循环次数为26次,即26个字母,按照大写在前小写在后的方式组合 最简单的方法是使用 SortedSet 这个接口来搞定!!!在 java.util.* 这个包里面。当然,如果你用数据结构里面的算法练练手也行。 如果你不想冒泡的话,就用这个先创建一个类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)); 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; }} 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; }} 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] 字符串匹配问题?? hibernate的级联删除 struts2 s:action标签循环打印问题 谁帮忙翻译下~~日文的 Apache与Tomcat集成,运行DWR reverse-ajax的疑问 请问 hibernate 中如何执行原生 sql 查询? 奇怪的数据库连接问题,请教! 请问怎么才能运行struts自带的例子呢? 硕士毕业论文--实现分布式多JVM的负载均衡。 用Java怎么实现CAD技术? 在Sturts2+Spring+Hibernate构架中怎么校验敏感字符呢? 一个报错问题
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;
}
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);
}
}
楼主,我帮你写了一个
当然,如果你用数据结构里面的算法练练手也行。
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));
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;
}}
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;
}}
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]