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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郁金香大公爵 中级黑马   /  2015-7-29 11:05  /  313 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)...
* @author
*
*/
public class Test1 {
public static  void main(String[] args){
  String str = "abcdekka27qoq";
  String char_count = getCharCount(str);
  System.out.println(char_count);
}
public static String getCharCount(String str) {
  char[] chs = str.toCharArray();      //将字符串转成字符数组
  Map<Character,Integer> map = new TreeMap<Character,Integer>();  //定义map集合
  for (int i = 0; i < chs.length; i++) {   //遍历字符数组,获取每一个字母
   Integer value = map.get(chs);    //将遍历到的字母作为键去查表,获取值
   int count = 0;     //用于记录次数
   if(value != null){   //判断次数是否存在
    count = value;     //存在,就用count记录次数
   }
   count++;           //次数不存在,就不记录,只对count自增变成1
   map.put(chs, count);   //将字符和次数进行存储
  }
  return toString(map);
}
public static String toString(Map<Character, Integer> map) {
       StringBuilder sb = new StringBuilder();   //使用缓冲区
       Set<Character> keySet = map.keySet();     //将map集合转变成set集合
       for (Iterator<Character> it = keySet.iterator(); it.hasNext();) {   //通过迭代器,取出map集合中的元素
   Character key = it.next();
   Integer value = map.get(key);
   sb.append(key+"("+value+")");   
   
  }
  return sb.toString();
}
}

0 个回复

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