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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhang214214 中级黑马   /  2015-5-9 18:01  /  745 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

給你一串字符串,如何识别里面有几个不同的字母? 比如    "ajuchfjdhdsjflhfdf"   里面有 a j u c h f d s l

9 个回复

倒序浏览
最简单的思想就是,将其转换为字符数组,然后添加到一个Set集合中就行!因为Set集合是无序的,不能重复的,到之后你在遍历出集合中的元素就行,长度也能直接得到了哈!
回复 使用道具 举报
哇哈哈哈!不错不错,这思路不错
回复 使用道具 举报
楼上正解
回复 使用道具 举报
本帖最后由 wkz_crystal 于 2015-5-9 18:45 编辑
  1. //重点就是因为set集合是不可重复的哈!
  2. import java.util.*;
  3. class Demo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 String str="ajuchfjdhdsjflhfdf";
  8.                 char[] ch=str.toCharArray(); //转化为字符数组

  9.                 HashSet<Character> hs=new HashSet<Character>(); //空Set结合

  10.                 for (int i=0;i<ch.length ;i++ )
  11.                 {
  12.                         hs.add(new Character(ch[i])); //字符转为字符对象添加到集合中
  13.                 }

  14.                 System.out.println(hs+"集合中有元素"+hs.size()+"个");
  15.         }
  16. }
复制代码
回复 使用道具 举报
wkz_crystal 发表于 2015-5-9 18:34
最简单的思想就是,将其转换为字符数组,然后添加到一个Set集合中就行!因为Set集合是无序的,不能重复的, ...

还要过滤掉其他字符哦,只保留英文26个字母
回复 使用道具 举报
zhang214214 发表于 2015-5-9 18:45
还要过滤掉其他字符哦,只保留英文26个字母

这样的话:改变一下小变动:那就是先将该字符串转化为字符数组,然后通过查表法(自定义一个52个字母的数组,大小写),到表中查到有,怎返回该字符对象,添加到set结合中就行,其它的一样了,明白了吗?
回复 使用道具 举报
  1. //针对上述我的思想,写了一个简单的程序,你可以看看哈!
  2. import java.util.*;
  3. class Demo
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 String str="aju%%%ch$$fjAAAdhd\nsDDDj\tfl****hf((!df";
  8.                 char[] ch=str.toCharArray(); //转化为字符数组

  9.                 String s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  10.                 //这里为了简单快捷,我用了字符串查表法,52个英文字母(大小写哈)

  11.                 HashSet<Character> hs=new HashSet<Character>(); //空Set结合

  12.                 for (int i=0;i<ch.length ;i++ )
  13.                 {
  14.                         if (s.contains(String.valueOf(ch[i]))) //判断是否包含
  15.                         {
  16.                                 //包含就添加进集合中哈!
  17.                                 hs.add(new Character(ch[i])); //字符转为字符对象添加到集合中
  18.                         }
  19.                 }

  20.                 System.out.println(hs+"集合中有元素"+hs.size()+"个");

  21.                 /*
  22.                         结果:[D, f, d, u, s, A, c, a, l, j, h]集合中有元素11个
  23.                 */
  24.         }
  25. }
复制代码
回复 使用道具 举报
回复 使用道具 举报

牛逼,虽然学过了集合,但是都想不出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马