黑马程序员技术交流社区

标题: 统计各种字符出现的次数问题. [打印本页]

作者: boom_pm2.5    时间: 2016-11-20 23:47
标题: 统计各种字符出现的次数问题.
上干货~

----------------------------------------------------------------------------------------------------------------
题文要求:

/*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 方法 放进去,
然后遍历 得出  每个字符的  输出次数.


作者: mfsara    时间: 2016-11-21 00:53
统计思想,首先要用到计数,给一个初始值,int count =0





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2