黑马程序员技术交流社区

标题: 如何统计一个字符串中有多少种字符 [打印本页]

作者: 于振发    时间: 2013-9-26 00:37
标题: 如何统计一个字符串中有多少种字符
本帖最后由 于振发 于 2013-9-27 18:39 编辑

                  老师讲过这个问题,时间过的太久了,想不起来了,请大家指导一下!
作者: HM马强    时间: 2013-9-26 00:52
本帖最后由 HM马强 于 2013-9-26 01:04 编辑
  1. String s = "123";
  2.                 String[] arr = s.split("");
  3.                 Set set = new HashSet();
  4.                 for (String str : arr) {
  5.                         set.add(str);                       
  6.                 }
  7.                 System.out.println(set.size());
复制代码
我也是新手,这样行不行呢?

作者: 晨曦    时间: 2013-9-26 21:52
楼上的差不多对了,可是用错了一个方法,这样得出的结果会大一,主要是s.split("")的第一个字符串是一个空字符串
正确代码如下
  1. import java.util.HashSet;
  2. import java.util.Set;


  3. public class SumChar {

  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.        
  7.                 String s = "123";
  8.         char[] arr = s.toCharArray();
  9.         Set set = new HashSet();
  10.         for (char str : arr) {
  11.                 set.add(str);                        
  12.         }
  13.         System.out.println(set.size());
  14.         }
  15. }
复制代码

作者: yting_xmei1129    时间: 2013-9-26 22:47
楼主,下面是饿刚刚敲的代码,应该可以满足你的要求--->

package com.itheima;

import java.util.HashMap;
import java.util.Map;

public class Test7 {

        public static void main(String[] args) throws Exception {
                Count("ruguoninengkanqingchuzhejigege,shuomingniyanjingyouwenti,yaoqukanyisheng!!!");
        }

        public static void Count(String str) throws Exception {
                Map<Character,Integer> map = new HashMap<Character, Integer>();
                char[] cbuf = str.toCharArray();

                for (int i = 0; i < cbuf.length; i++) {
                        if (map.containsKey(cbuf[i])) {
                                map.put(cbuf[i], map.get(cbuf[i]) + 1);
                                continue;
                        }

                        map.put(cbuf[i], 1);
                }
                for (Map.Entry<Character, Integer> me : map.entrySet()) {
                        System.out.println(me.getKey() + " : " + me.getValue() + " 次");
                }
        }
}

希望可以帮到楼主、、、

The you smile until forever 、、、、、、、、、、、、、、、、、、、、、、
作者: yting_xmei1129    时间: 2013-9-26 22:48
运行结果--->
g : 8 次
! : 3 次
e : 6 次
c : 1 次
a : 4 次
n : 12 次
o : 4 次
m : 1 次
j : 2 次
k : 2 次
, : 2 次
h : 4 次
i : 8 次
w : 1 次
u : 6 次
t : 1 次
s : 2 次
r : 1 次
q : 2 次
z : 1 次
y : 4 次
作者: 黄文伯    时间: 2013-9-27 10:50
亲,如问题已解决请将分类的“未解决”改为“已解决”。 以后的问题贴也要及时更改分类哦~




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