A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.*;

  2. class CharacterCount{

  3. public static void main(String[] args){

  4. String str = "a*b/cd. FEWg";

  5. str = getCharacterCount(str);
  6. System.out.println(str);
  7. }

  8. public static String getCharacterCount(String str){

  9. //创建一个map集合存放字母和对应的出现次数
  10. TreeMap<Character,Integer> charMap = new TreeMap<Character,Integer>();

  11. //需要遍历字符串中的所有字符,所以先将字符串转换为字符数组
  12. char[] charArr = str.toCharArray();



  13. //遍历charArr数组
  14. for(int i = 0;i < charArr.length; i++){

  15. //由于字符串中可能包含非字母的字符,所以对每个字符进行判断
  16. if(!(charArr[i] >= 'a' && charArr[i] <= 'z' || charArr[i] >= 'A' && charArr[i] <= 'Z')){
  17. continue;
  18. }

  19. Integer value = charMap.get(Character.valueOf(charArr[i]));
  20. //经过判断后,剩下的字符都是字母了
  21. //存入map之前首先判断该字母是否已经存在于map中,如果不存在则以该字母作为键,以1作为值存入map中
  22. //如果该字母已经存在于map中,则将对应的值加1后再存入map中

  23. if(value == null){
  24. //charMap.put(charArr[i],1);
  25. value = 1;
  26. }else{
  27. //charMap.put(charArr[i],++value);
  28. value++;
  29. }
  30. charMap.put(charArr[i],value);
  31. value = 0;
  32. }


  33. //遍历map,在遍历过程中,将遍历到的键值对存入StringBuilder中
  34. StringBuilder sb = new StringBuilder();
  35. Set<Character> keySet = charMap.keySet();

  36. for(Iterator<Character> it = keySet.iterator();it.hasNext();){
  37. //获取键
  38. Character key = it.next();
  39. //根据键获取值
  40. Integer value = charMap.get(key);
  41. //将键值对存入StringBuilder中
  42. sb.append(key + "("+ value +")");
  43. }

  44. return sb.toString();
  45. }
  46. }
复制代码

请指正......

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马