第二种
String str="abcabcabcabefa"; char[] chars=str.toCharArray(); char[] cs=new char[0]; int[] num=new int[0]; for(int i=0;i<chars.length;i++){ boolean boo=true; for(int j=0;j<cs.length;j++){ if(cs[j]==chars[i]){ boo=false; num[j]=num[j]+1; } } if(boo){ char[] new_cs=new char[cs.length+1]; int[] new_num=new int[num.length+1]; for(int j=0;j<cs.length;j++){ new_cs[j]=cs[j]; } for(int j=0;j<num.length;j++){ new_num[j]=num[j]; } new_cs[new_cs.length-1]=chars[i]; new_num[new_num.length-1]=1; cs=new_cs; num=new_num; } }System.out.println("种类="+Arrays.toString(cs)); System.out.println("数目="+Arrays.toString(num));结题思想:扫描原数据,逐个选择作为对比主体,让对比主体和他之前的每个数据做比较,如果相同,说明比较主题是重复的,如果前面所有数据都没有重复的那么就是新的数据,需要用一个变量装下这套结果,结果的个数正好是原数据的文字数量,那么让结果保存在等长数组中,根据结果意义选择了boolean数据类型,得到所有种类后,创建一套数据结构能够保存该数据的两个属性,数据的名字,数据的个数,这里考虑用到数组下表映射,让数据名字保存在char类型数组中,让个数保存在int类型数组中。接下来要将原数据哄的文字转移到数据名字的char类型数组,用之前存在boolean数组中的结果快速对比,找到那些需要储存,并且用游标,让数据逐个向后保存,之后计算没个数据的个数,多层for循环,技术没个字符出现的次数。