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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package Test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;

public class test7 {
       
        public static void main(String[] args) {
                Testseven t = new Testseven();
                t.testseven("cbcaaabb");
}
}
class Testseven
{
        public void testseven(String str)
        {
                char[] c = str.toCharArray();
                int count = 0;
                int times = 0;
                for(int i = 0 ; i < str.length(); i++)
                {
                        for(int y = 0 ; y < str.length();y++)
                        {       
                                if(c[i] == c[y])
                             count ++;               
                        }
                        ArrayList al = new ArrayList();
                        al.add(c[i]);

                        System.out.println(c[i]+" "+count);
                        count = 0;
                }
        }
}
这是一道基础题:让统计字符串中字符出现的次数,类似于输入“abbccc",输出"a : 1 , b : 2, c : 3",可是嵌套循环出来的结果有重复(重复的原因是我从第一个字符开始于每一个字符作比较,如果相同,count++),反正出来的结果是c:2  b : 3   c : 2  a : 3 。。。。。。
貌似没有那么困难但是还是木有写出来,只能求救了

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

5 个回复

正序浏览
建议使用Map集合来存储每个字符出现的次数信息,以下是我改写的你的Testseven类,希望对你有帮助
  1. class Testseven
  2. {
  3.         public void testseven(String str)
  4.         {
  5.                         //创建一个存放字符->次数的Map集合
  6.             HashMap<Character,Integer> map = new HashMap<Character,Integer>();
  7.                        
  8.                         int l = str.length();
  9.                         //循环取出字符串中的一个字符
  10.                         while(--l>=0)
  11.                         {
  12.                                 char ch = str.charAt(l);
  13.                                 //当本次循环取出的字符在Map中存在时,在原来次数基础上加一
  14.                                 if(map.containsKey(ch))               
  15.                                 {
  16.                                         int num = map.get(ch);
  17.                                         map.put(ch,++num);
  18.                                 //不存在时,就把字符当键,1为值存入Map中
  19.                                 }else{
  20.                                         map.put(ch,1);
  21.                                 }       
  22.                         }
  23.                         //通过Map的entrySet方法获取键值关系,后迭代出Map中的数据
  24.                         Set<Map.Entry<Character,Integer>> entryset = map.entrySet();
  25.                         Iterator<Map.Entry<Character,Integer>> it = entryset.iterator();
  26.                         while(it.hasNext())
  27.                         {
  28.                                 Map.Entry<Character,Integer> mapentry = it.next();
  29.                                 System.out.println(mapentry.getKey()+":"+mapentry.getValue());
  30.                         }
  31.         }
  32. }
复制代码



评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王家胜 于 2013-12-6 13:25 编辑

写基层代码少,速度快

  1. public class Tests
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String st="dsssssssfddsfsdfsdsaasdfgggdsdfdfdf";
  6.                 char [] ar=st.toCharArray();
  7.                 for(int i=0;i<ar.length;i++)
  8.                 {
  9.                         for(int j=i+1;j<ar.length;j++)
  10.                         {
  11.                                 if(ar[i]==ar[j])
  12.                                 {
  13.                                         ar[j]=' ';
  14.                                 }
  15.                         }
  16.                 }
  17.                 System.out.println(new String(ar).replaceAll(" ", ""));
  18.         }
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
建两个集合,a集合,b集合,所有的数据存到a中,将a取出存到b中,判断如果b中contain这个数据就不存
最后遍历b就是没有重复的

代码就不写了,主要就是遍历,和集合中的contains方法

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
何丛 发表于 2013-12-6 10:45
你的思路错了,用Map集合来存储很简单的,或者你用两个数组也行

  明白  我试试
回复 使用道具 举报
你的思路错了,用Map集合来存储很简单的,或者你用两个数组也行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马