统计字符串中各个字符出现的次数(六)

简介: 统计字符串中各个字符出现的次数(六)

一. 统计字符出现的次数


有一个长字符串,里面有多个不同的字符,统计一下各个字符出现的次数。有很多种方法来实现,可以用一种新的方式去处理,用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)


谢谢!!!

相关文章
|
4月前
|
算法
统计一字符串中,重叠字符出现的次数
统计一字符串中,重叠字符出现的次数
42 0
|
5月前
|
编译器 C语言
字符串\统计字符
字符串\统计字符
36 3
|
6月前
|
存储 Python
判断一个字符串中出现次数最多的字符,统计这个次数?
判断一个字符串中出现次数最多的字符,统计这个次数?
77 0
|
JavaScript 前端开发
判断一个字符串中出现次数最多的字符,统计这个次数
判断一个字符串中出现次数最多的字符,统计这个次数
77 0
判断一个字符串中出现次数最多的字符 统计这个次数
判断一个字符串中出现次数最多的字符 统计这个次数
|
Python
统计字符串中不同字符个数问题
统计字符串中不同字符个数问题
128 0
R7-2 统计字符[2]
R7-2 统计字符[2]
99 0
C/C++编程题之删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。