字符串内部字符排序笔试题 题目:输入一个字符串,按照ASCII码升序重排后输出。当时没写好,回去后又写了下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * @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); }} 今天早上看到这个帖子,也自己写一下,练练手感。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码值验证是否正确 }} 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)); }} Arrays.sort()对基本类型采用快速排序,如果不加Comparator的话按自然排序,对CHAR来说就是按ASCII码来排的 用一个int型的数组存放字符的asc码数组排序转化为char类型后打印输出 有一条题目:java.io中的File类是? 求答案,并解释原因,谢谢。 吸血鬼数字 请教引用包的问题 JSP的问题! 下拉控件问题 请问一个float型的数字*35% 应该怎么做才能使仍是float型数字输出呢?下面有一段是此题的代码.请帮我看一下该怎么改.在此先谢过各位前辈了 关于线程的问题? 安装Tomcat 做一个基于C/S的停车预约系统要用那些知识 菜鸟问题2-〉改变windows属性 请问高人如何用JAVA计算文件夹的大小?
/**
* @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);
}}
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码值验证是否正确
}
}
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));
}
}
数组排序
转化为char类型后打印输出