一. 统计字符出现的次数
有一个长字符串,里面有多个不同的字符,统计一下各个字符出现的次数。有很多种方法来实现,可以用一种新的方式去处理,用Map 的方式。 统计时,最好可以按照字母的顺序进行相应的排序,所以可以使用TreeMap 的方式。 利用Map,可以减少空间复杂度。
二. 处理代码
public static String showCount(String str){ //1.将字符串转换成相应的字符数组 。 用TreeMap进行相应的接收。 char[] charArr=str.toCharArray(); // 用包装类。 Map<Character,Integer> map=new TreeMap<Character,Integer>(); for (char c : charArr) { //对每一个字符进行相关的判断。 //2. 对传入的字符进行判断。如果不是a-z或者A-Z 就不判断。 if(!(c>='a'&&c<='z'||c>='A'&&c<='Z')){ continue; } //3.是的话,就从map中判断,看是否能够取出。 Integer count=map.get(c); //看数目。 if(count==null){ //即没有取出来,设置数目为1. map.put(c,1); }else{ map.put(c,count+1); // 为原来的数目+1 } } return mapToString(map); }
三. Map 转换成String 字符串的方法
//将Map转换成相对应的字符串进行输出。 public static String mapToString(Map<Character,Integer> map){ StringBuilder sb=new StringBuilder(); //需要遍历一下这个map. for (Map.Entry<Character, Integer> m: map.entrySet()) { sb.append(m.getKey()+"("+m.getValue()+")"); } return sb.toString(); }
四. 代码
public class StringTest3 { public static void main(String[] args) { String string="adsfahlkj;asdf;sal124+asfdbclsdmnqoqweprqwklhsdf;sdlanzm,nxcwerqabcdefghijklmnopqrstuvwxyz"; System.out.println("展示值:"+showCount(string)); } public static String showCount(String str){ //1.将字符串转换成相应的字符数组 。 用TreeMap进行相应的接收。 char[] charArr=str.toCharArray(); Map<Character,Integer> map=new TreeMap<Character,Integer>(); for (char c : charArr) { //对每一个字符进行相关的判断。 //2. 对传入的字符进行判断。如果不是a-z或者A-Z 就不判断。 if(!(c>='a'&&c<='z'||c>='A'&&c<='Z')){ continue; } //3.是的话,就从map中判断,看是否能够取出。 Integer count=map.get(c); //看数目。 if(count==null){ //即没有取出来。 map.put(c,1); }else{ map.put(c,count+1); } } return mapToString(map); } //将Map转换成相对应的字符串进行输出。 public static String mapToString(Map<Character,Integer> map){ StringBuilder sb=new StringBuilder(); //需要遍历一下这个map. for (Map.Entry<Character, Integer> m: map.entrySet()) { sb.append(m.getKey()+"("+m.getValue()+")"); } return sb.toString(); } }
控制台输出结果为:
展示值:a(7)b(2)c(3)d(7)e(3)f(5)g(1)h(3)i(1)j(2)k(3)l(6)m(3)n(4)o(2)p(2)q(5)r(3)s(8)t(1)u(1)v(1)w(4)x(2)y(1)z(2)
谢谢!!!