黑马程序员技术交流社区

标题: 还有计算字符串字母次数的方式么?求解 [打印本页]

作者: xiaoxiao147    时间: 2015-9-8 01:09
标题: 还有计算字符串字母次数的方式么?求解
需求:计算一个字符串中各字符的出现次数,例如:“dsaiadiewbnashd” 输出格式:i(2)b(1)d(3)a
(3)....

思路:
        1.先把字符串转成字符数组.
        2.看输出格式有两项组成,字母和次数,字母唯一(key),次数可变(value),
        定义一个Map集合用以存储.
        3.遍历字符数组,在此过程中判断字符是否已经存在于Map中
                如果不存在,将此字母以次数1存入集合
                如果已存在,将此字母次数加1后存入集合
        4.得出的集合元素都是字符,需要使用StringBuffer进行拼接,拼接后转成字符串类型输出.


*/
import java.util.*;
public class CountString
{
        public static void main(String[] args)
        {
                String s = "djiewdjakjwqiasb";
                char [] chs = s.toCharArray();
                TreeMap<Character,Integer> tm = new TreeMap<>();
                for(char c : chs)
                {
                        Integer i = tm.get(c);//通过key获取value
                        if(i == null)
                        {
                                tm.put(c,1);
                        }
                        else
                        {

                                i++;
                                tm.put(c,i);
                        }               
                }
                StringBuffer sb = new StringBuffer();
                Set<Character> set = tm.keySet();
                for(Character ch : set)
                {
                        Integer k = tm.get(ch);
                        sb.append(ch).append("(").append(k).append(")");
                }
                System.out.println(sb.toString());

        }
}


以上程序输出结果:a(2)b(1)d(2)e(1)i(2)j(3)k(1)q(1)s(1)w(2)
感觉有点麻烦,请问各位大神还有其他较为便捷的方式吗!!!
作者: kevin986745zk    时间: 2015-9-8 07:53
这是上课时老师讲的吧,你把它复制过来了,没有创新呀!
作者: xiaoxiao147    时间: 2015-9-8 22:22
求新的啊




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