上干货~
----------------------------------------------------------------------------------------------------------------
题文要求:
/*1.有一个字符串,内容是: String str="heima shi wo jia, Da Jia Yao Ai Hu Ta!"; 编写代码,统计每个字符出现的次数, 输出的结果如下: a(2),b(3)....A(3),B(4)....*/ ------------------------------------------------------------------------------------------------------------------------
代码区:
import java.util.Comparator;
import java.util.TreeMap;
public class HomeWork01 {
public static void main(String[] args) {
//1,定义一个字符串去储存它.
String str="heima shi wo jia, Da Jia Yao Ai Hu Ta!";
//2,使用统计 它,并且排序,使用TreeMap,键是 字符串, 值是 Character
TreeMap<Character, Integer> tm = new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
//从新写入排列顺序,a-z 97-123 A-56
if (o1>='A'&&o1<='Z'&&o2>='a'&&o2<='z') {
return o1-o2+100;
} else if (o1>='A'&&o1<='Z'&&o2>='A'&&o2<='Z') {
return o1-o2;
} else if (o1>='a'&&o1<='z'&&o2>='A'&&o2<='Z') {
return o2-o1;
} else if (o1>='a'&&o1<='z'&&o2>='a'&&o2<='z') {
return o1-o2;
}
return o1-o2;
}
});
//3,去重复
String regex = "[^a-zA-z]+";
String str1 = str.replaceAll(regex, "");
// System.out.println(str1);
char []arr = str1.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (!tm.containsKey(arr)) {
tm.put(arr, 1);
} else {
tm.put(arr, tm.get(arr)+1);
}
}
//循环输出
for (char c : tm.keySet()) {
System.out.print(c+"("+tm.get(c)+")"+" ");
}
}
}
------------------------------------------------------------------------------------------------------------------------------
总结下:
这道题,用到了 统计的思想, 还有如何排序的问题
然后,,
我进行了 正则的拆分,
然后变成 字符数组,
然后 创建了TreeMap 这个 双列集合,
键存 字符, 值存 出现的次数
通过 PUT 方法 放进去,
然后遍历 得出 每个字符的 输出次数.
|